【发布时间】:2013-08-02 18:03:26
【问题描述】:
有状态会话 bean 定义如下:
有状态会话 Bean 对象的状态由值组成 它的实例变量。在有状态会话 bean 中,实例 变量表示唯一客户端 bean 会话的状态。因为 客户端与其 bean 交互(“对话”),这种状态通常是 称为会话状态。
无状态会话 bean 定义如下:
无状态会话 Bean 无状态会话 bean 不维护 与客户的对话状态。当客户端调用 无状态 bean 的方法,bean 的实例变量可能包含 特定于该客户端的状态,但仅在 调用。当方法完成时,客户端特定的状态 不应保留。但是,客户可以更改 池化无状态 bean 中的实例变量,并且此状态被保存 转到池化无状态 bean 的下一次调用。除了 在方法调用期间,无状态 bean 的所有实例都是 等效,允许 EJB 容器将实例分配给任何 客户。也就是说,无状态会话 bean 的状态应该适用 跨越所有客户。
使用无状态会话 bean 相对于有状态会话 bean 的优势如下:
因为无状态会话 bean 可以支持多个客户端,所以它们可以 为需要大量数据的应用程序提供更好的可扩展性 的客户。通常,应用程序需要更少的无状态会话 bean 比有状态会话 bean 支持的数量相同 客户。
所以想到的问题是什么时候应该使用有状态会话 bean?根据我对此事的幼稚理解,应该尽可能坚持使用无状态会话 bean。
应该使用有状态会话 bean 的候选对象是什么?有什么好的例子吗?
【问题讨论】:
标签: jakarta-ee ejb stateless-session-bean stateful-session-bean