EJB组件:基本结构解析
发表于:2008-01-28来源:作者:点击数:
标签:EJB组件
EJB规范的主要目的是将企业应用系统 开发 人员从应用系统级的编程工作中解脱出来,使之可以集中精力进行应用系统中商务规则的系统分析和代码编写工作。 按照EJB2.0规范的定义,EJB组件由Home接口、Remote接口、组件类和部署描述文件构成。应用程序开发人员在
EJB规范的主要目的是将企业应用系统开发人员从应用系统级的编程工作中解脱出来,使之可以集中精力进行应用系统中商务规则的系统分析和代码编写工作。 按照EJB2.0规范的定义,EJB组件由Home接口、Remote接口、组件类和部署描述文件构成。应用程序开发人员在编写EJB组件的代码时,必须完整定义组件的各个接口、组件类以及描述组件需要EJB容器提供服务的部署描述文件。
EJB组件的命名规则
EJB规范中定义的会话组件和实体组件分别由Home接口、Remote接口和组件类构成,因此,在组件接口对象和组件类的创建过程中,应遵循统一的命名规则。例如要编写一个用于计算津贴的有状态会话(Stateless SessionBean)类型EJB组件,可以根据组件完成的功能将该组件命名为"CalcBonus",构成该EJB组件其它元素的命名规则如下:
EJB对象
EJB对象表示要创建的EJB组件,没有与之相对应的代码。EJB对象的命名规则是在表示组件商务意义的字符串后附件字符串"EJB"。按照规则,可以将津贴计算EJB组件对象命名为"CalcBonusEJB"。
Home接口
Home接口的命名规则是在表示组件商务意义的字符串后附件字符串"Home"。因此,可以将津贴计算EJB组件的Home接口命名为"CalcBonusHome"。
Remote接口
EJB组件的Remote接口对象可以直接采用表示组件商务意义的字符串进行命名。例如,将津贴计算组件的Remote接口命名为"CalcBonus"。
组件类
组件类的命名规则是在表示组件商务意义的字符串后附加"Bean"。例如,将津贴计算组件类命名为"CalcBonusBean"。
EJB组件的Home接口
EJB组件的Home接口用于定义创建、查找和删除组件对象实例的方法。以有状态会话类型EJB组件CalcBonusEJB为例,其Home接口定义如下面代码所示:
public interface CalcBonusHome extends EJBHome
{
public CalcBonus create() throws CreateException,RemoteException;
public CalcBonus create( int nRate ) throws CreateException,
RemoteException;
public void remove() throw RemoteException;
} |
在上述定义中,EJB组件的Home接口继承EJBHome接口,在该接口中包括两个异构类型的创建组件对象实例的create方法,两个方法均返回该EJB组件的Remote接口对象。在Home接口中还定义了用于从EJB容器的组件实例池中删除组件对象实例的remove方法。该方法对应于EJB组件类中定义的ejbRemove方法。
对于实体类型EJB组件,在组件的Home接口中还应定义查找组件对象实例的方法,用于客户端根据实体组件的主键值在EJB容器中查找指定的实体类型EJB组件。该方法的定义和实现过程将在第6讲中详细讲解。
另外,Home接口中定义的create方法和remove方法能够抛出的RemoteException和CreateException类型异常。两种类型的异常定义在java.rmi包中并且异常的参数和返回值类型均为合法的RMI-IIOP类型。由异常的返回值形式可以看出:EJB组件对象的Home接口是对Java RMI-IIOP协议有效的接口,客户端应用可以基于RMI-IIOP协议访问部署在EJB容器中的组件对象的Home接口。
在Home接口中定义的方法除了能够抛出上述系统异常外,EJB组件的设计人员可以定义用户类型异常并Home接口中定义的方法抛出。
EJB组件的Remote接口
EJB组件的Remote接口用于定义客户端应用程序能够调用的组件商务方法。与Java接口定义相似,在Remote接口中定义的商务方法只是一个框架而没有具体的实现代码。EJB组件设计人员根据Remote接口中定义的商务方法在组件类中为这些方法编写实现代码。有状态会话类型EJB组件CalcBonusEJB的Remote接口定义如下:
public interface CalcBonus extends EJBObject
{
public float calculateBonus() throws RemoteException;
public float calculateTax( float fRate,float fBonus )
throws RemoteException;
} |
EJB组件的Remote接口继承定义在javax.ejb包中的EJBObject接口。在Remote接口中定义了两个名称分别为calculateBonus和calculateTax的方法。两个方法均抛出RemoteException类型异常。由Remote接口中定义的方法能够抛出的异常类型可以看出:Remote接口同样是对于Java RMI-IIOP协议有效的远程接口。