无论你创建bean会话是为了执行特定任务,还是把表映射到实体bean以更新数据,都可以使用普通的java对象与接口来完成这些工作,并且可以通过在业务方法中使用注释,把方法提供给客户端.
enterprise javabean (ejb) 是可重用的.可移植的 j2ee 组件.ejb 由封装业务逻辑的方法组成.譬如说,ejb 可能有这样的业务逻辑:包含了更新数据库中客户数据的方法.众多远程与本地客户端可以调用该方法.另外,ejb 在容器里面运行,这样开发人员只要关注bean里面的业务逻辑,不必担心复杂.容易出错的问题,譬如事务支持.安全性与远程对象访问等.ejb 作为普通java对象(pojo)的形式来开发,开发人员可以使用元数据注释(metadata annotations)来指定容器如何管理这些bean.
ejb 包括三种主要类型:会话 bean.实体 bean与消息驱动的bean.会话bean执行独立的.解除耦合的任务,譬如检查客户的信用记录.实体bean是一个复杂的业务实体,它代表数据库中存在的业务对象.消息驱动的bean用于接收异步jms 消息.下面,让我们进一步研究ejb 3.0规范中的这些类型.
一.会话bean
会话bean通常代表业务流程里面的操作,譬如“处理订单”.可根据对话状态的保持性,即有状态与无状态对会话bean进行分类.
无状态的会话 bean没有内部状态.它们不跟踪记录从一个方法调用传递到另一个方法调用的信息.因此,每次调用无状态的业务方法都独立于前一次调用,譬如计算税款或者运费.用某个应税值调用计算税款的方法时,对税款值进行计算并返回给调用方法,而不必保存调用者的内部状态供以后调用.因为这些bean并不保持状态,所以容器对它们进行管理就很简单.客户端请求无状态的bean实例时,可以从容器保持的无状态的会话bean 实例池当中接收一个实例.另外,因为无状态的会话 bean可以共享,所以容器可保持数量较少的实例为许多客户端提供服务.想指定java bean作为无状态的会话bean加以部署及管理,只需要为该bean添加注释@stateless.
有状态的会话 bean在方法调用时可保持对话状态,譬如客户的网上购物车.客户开始网上购物时,可以从数据库中检索客户的详细信息.客户往购物车里面添加商品或者从里面删除商品.下订单等时调用的其他方法也可以使用这些详细信息.不过,有状态的会话bean是暂时性的,因为出现会话终止.系统崩溃或者网络故障后,状态不复存在.客户端请求有状态的会话bean实例时,就为该客户端分配一个有状态的实例,并为该客户端保持该组件的状态.要指定容器在某个方法完成后删除有状态的会话bean实例,只要为该方法添加注释@remove.... 下一页