会话bean就像上篇文章中提到的它的目的是提供1种旨在封装业务服务的组件技术。通常使用常规的Java接口来定义该服务支持的操作,把它作为会话bean的业务接口,客户端通过它与bean进行交互。平时做开发的时候好像没有定义过接口,而是直接将会话bean拿过来用。实现会话bean比常规的Java类稍微复杂1点,如果存在1个业务接口,那末它将会实现这个接口。但是由因而EJB组件模型的1部份,因此该bean可以访问1些列广泛容器服务以实现业务服务。名称“会话bean”的意义在于客户端访问它们和与它们进行交互的方式。1旦客户端以http://www.wfuyu.com/server/取得会话bean的援用,它可以利用该bean启动1个会话并调用其业务操作。
有3种类型的会话bean:无状态的(stateless)、有状态的(stateful)和单例(singleton)。
与无状态会话bean的交互以启动业务方法调用作为开始,在方法调用完成式结束。不会有状态从业务操作转移到另外一个业务操作。与有状态会话bean的交互变得更像是1次谈话,它开始于客户端获得会话bean的援用的时候,然后在客户端显示地把该bean释放会http://www.wfuyu.com/server/以后结束。有状态会话bean的业务操作可以在调用之间保持bean实例的状态。在具体描写每种类型的会话bean时,将更加详细地讨论关于这类交互样式实现的区分斟酌。
EJB3.1中引入的单例会话bean,可以认为是无状态和有状态会话bean的混合。由于所有的客户端都同享相同的单例bean实例,所以在方法调用之间同享状态成为可能,但是单例会话bean缺少有状态会话bean的对话协议和可移动性。单例会话bean 的状态还引发了并发性的问题,当决定是不是使用这类样式的会话bean时,需要斟酌到这个问题。
客户端从不直接与1个会话bean实例进行交互。客户端会援用和调用1个http://www.wfuyu.com/server/所提供的业务接口的实现。这个实现类充当了底层bean实现的代理。将客户端与bean解耦和,从而允许http://www.wfuyu.com/server/截获方法调用以提供bean需要的服务,如事务管理。它还允许http://www.wfuyu.com/server/必要时优化和重用会话bean类的实例。