字号: 小 中 大 |
推荐给好友
上一篇 |
下一篇
EJB组件:基本结构解析
发布: 2008-1-28 14:29 |
作者: 苏洋 |
来源:
不详 |
查看: 49次 | 进入软件测试论坛讨论
EJB组件类
EJB组件类用于定义两种类型方法的实现代码:一种是EJB组件的生命期方法,另外一种是EJB组件的Remote接口中定义的商务方法。会话类型EJB组件对象的组件类实现SessionBean接口、实体类型EJB组件实现EntityBean接口、消息驱动类型EJB组件实现MessageDrivenBean和MessageListener接口。下面代码为有状态会话类型EJB组件CalcBonusEJB的组件类定义代码:
public class CalcBonusBean implements SessionBean
{
private SessionContext ctx;
private int nRate;
public void setSessionContext(SessionContext ctx)
{ this.ctx = ctx; }
public void ejbActivate() {}
public void ejbPassivate() {}
public void ejbRemove() {} throws RemoveException
public void ejbCreate () {} throws CreateException
public void ejbCreate (int nRate) throws CreateException
{ this.nRate = nRate; }
public float calculateBonus() throws RemoteException
{ return 100.0f; }
public float calculateTax(float fRate, float fBonus)
throws RemoteException
{ return fBonus*fRate; }
} |
上述会话类型EJB组件对象CalcBonusEJB的组件类定义实现了SessionBean接口对象。
就有状态会话类型EJB组件而言,在组件类定义中除了实现组件的商务方法外,还需要实现SessionBean接口中定义的ejbCreate、ejbRemove、ejbActivate和ejbPassivate等组件生命期方法。
会话类型EJB组件的生命期由EJB组件部署的EJB容器控制,因此在定义的方法中没有任何代码。如果定义一个组件管理持久性(BMP)实体类型的EJB组件,则需要为所有的组件生命期方法编写生命期控制代码。
另外还需要明确的是:客户端应用程序调用部署在EJB服务器中EJB组件的方法,其实质上不是直接调用组件类中定义的方法,而是通过EJB组件的Home接口和Remote接口在EJB容器中的映射由EJB容器采用代理方式调用EJB组件类中的商务方法或者生命期方法。
部署描述文件
部署描述文件是EJB组件的组装者和部署者应用的XML类型文档,其主要作用是声明EJB组件的构成、部署过程中需要EJB容器提供的服务以及对于系统资源的需求等信息。在EJB组件的组装和部署过程中,部署描述文件和EJB组件的Home接口、Remote接口以及组件类定义文件打包成为JAR压缩文档。下面的代码为CalcBonusEJB组件对象部署描述文件的部分代码:
… …
<SessionBean>
<ejb-name>CalcBonusEJB</ejb-name>
<home>CalcBonusHome</home>
<remote>CalcBonus</remote>
<ejb-class>CalcBonusBean</ejb-class>
</SessionBean>
<container-transaction>
<method>
<ejb-name>CalcBonusEJB</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>
null
</trans-attribute>
</container-transaction>
… … |
在上面的EJB组件部署描述文件中,<SessionBean>字段说明构成EJB组件的接口和组件类名称。在<container-transaction>字段中声明需要EJB容器提供的事务服务。本讲中设计的有状态会话类型EJB组件不需要容器来提供事务服务,因此在<trans-attribute>字段中设置事务属性为null。如果调用EJB的商务方法时需要EJB服务器提供事务服务,则应设置该字段为needed等。
文章来源于领测软件测试网 https://www.ltesting.net/