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