会话Bean的类型
会话bean有三种类型:有状态,无状态和单例。
有状态会话Bean
对象的状态由其实例变量的值组成。在有状态会话bean中,实例变量表示唯一客户/ bean会话的状态。由于客户端与bean交互(“对话”),这个状态通常被称为会话状态。
顾名思义,会话bean类似于交互式会话。会话bean不共享; 它只能有一个客户端,就像一个交互式会话只能有一个用户一样。当客户端终止时,其会话bean似乎终止,不再与客户端关联。
该状态在客户端/ bean会话期间被保留。如果客户端删除了这个bean,这个会话就结束了,这个状态就消失了。然而,这种状态的暂时性不是问题,因为当客户端和bean之间的对话结束时,不需要保持状态。
无状态会话Bean
无状态会话bean不会与客户端保持对话状态。当客户端调用无状态bean的方法时,bean的实例变量可能包含特定于该客户端的状态,但仅在调用期间。该方法完成后,客户端特定状态不应保留。但是,客户端可能会更改共用无状态bean中的实例变量的状态,并且此状态将被保留到下一次对共用无状态bean的调用中。除了在方法调用期间,无状态bean的所有实例都是等价的,允许EJB容器将实例分配给任何客户端。也就是说,无状态会话bean的状态应该适用于所有客户端。
因为它们可以支持多个客户端,所以无状态会话bean可以为需要大量客户端的应用程序提供更好的可伸缩性。通常情况下,应用程序需要比有状态会话bean更少的无状态会话bean来支持相同数量的客户端。
无状态会话bean可以实现Web服务,但是有状态会