有状态会话 bean 定义如下:
有状态会话 Bean 对象的状态由其实例变量的值组成。在有状态会话 bean 中,实例变量表示唯一客户端 bean 会话的状态。因为客户端与其 bean 交互(“交谈”),所以这种状态通常称为会话状态。
无状态会话 bean 定义如下:
无状态会话 Bean 无状态会话 bean 不与客户端保持会话状态。当客户端调用无状态 bean 的方法时,bean 的实例变量可能包含特定于该客户端的状态,但仅限于调用期间。当方法完成时,不应保留特定于客户端的状态。但是,客户端可以更改池化无状态 bean 中实例变量的状态,并且该状态将保留到池化无状态 bean 的下一次调用。除了在方法调用期间,无状态 bean 的所有实例都是等效的,允许 EJB 容器将实例分配给任何客户端。也就是说,无状态会话 bean 的状态应该适用于所有客户端。
使用无状态会话 bean 优于有状态会话 bean 的优点如下:
因为无状态会话 bean 可以支持多个客户端,所以它们可以为需要大量客户端的应用程序提供更好的可伸缩性。通常,应用程序需要比有状态会话 bean 更少的无状态会话 bean 来支持相同数量的客户端。
所以想到的问题是什么时候应该使用有状态会话bean?根据我对此事的天真理解,应该尽可能坚持使用无状态会话 bean。
应该使用有状态会话 bean 的候选对象是什么?有什么好的例子吗?