您的位置:首页 > 其它

EJB component开发简介

2007-05-01 00:32 232 查看
EJB component开发简介
1.EJB component的分类:
1. session bean
2. entity bean
3. message-drived bean
2.EJB Component 的组成部分:
#1.Enterprise Bean 类:
包含了组件的实现细节,是实际完成bean功能的地方。EJB容器根据需要调用这个类对bean进行实例化。EJB规范定义了很多标准接口,可供编写、实现bean的类继承,这些接口定义了一些bean类必须实现的接口,以便用户的bean类对外暴露所有的bean都必须提供的特定方法,因为EJB容器需要利用这些方法来对bean进行管理。这些接口集中在javax.ejb.EnterpriseBean接口中,它扩展了java.io.Serializable接口。这个接口是标记接口,实现它表明所编写的是一个真正的Enterprise Bean类。由于它没有扩展Remote接口,所以bean本身是不具备网络功能的,无法通过网络让客户端直接调用,相应的网络和中间件功能是通过下面的EJB对象提供的。不同类型的Enterprise Bean实现不同的接口,在这些接口中分别定义了一些必须的方法,这些方法都是管理bean的方法,是供容器调用的,bean的客户端永远也不会调用。在此基础上再添加用户所需的业务方法等。
#2.EJB对象:
在服务器端,一个EJB对象是一个实现了bean的远程接口(具有网络功能)的分布式对象,它在服务器端上包装了bean的实例。EJB对象是容器供应商工具产生的,由EJB容器自动生成,事物处理、安全管理、持久性控制等中间件服务是由容器提供的,EJB对象由容器控制在适当的时机调用所需的服务,这些服务对客户而言是透明的。这种委托机制是EJB体系最大的优点之一。通过委托,用户在实现bean时可以只关注于自己要完成的业务逻辑。由EJB对象透明的完成其他复杂的功能。对客户端而言,所见到的只是EJB对象,只能调用它的方法,因而在EJB对象中,必须复制bean类的所有业务方法并暴露给客户端。注意,EJB对象的具体实现随容器的不同而不同,但客户端是感觉不到的。
#3.Remote接口
遵照EJB规范,所有的Remote接口都必须来源于一个通用的接口,即javax.ejb.EJBObject接口,该接口扩展了java.rmi.Remote,包含了EJB对象必须实现的方法。除与应用程序本身有关的违例,远程接口中的每个方法都必须在自己的throws从句中声明java.rmi.RemoteException.这些方法是容器生成EJB对象时实现的。Remote接口中还必须复制bean中的业务方法。(RMI)接口的属性必须是public.作为参数或返回值传递的一个远程对象(不管是直接,还是本地对象中嵌入)必须声明为远程接口,不可声明为实施类。
#4.Home对象
客户端调用的是EJB对象的方法,而不是直接调用bean的方法。但客户端如何获得EJB对象的引用的呢?由于EJB对象可能分布在网络上,客户端无法直接生成EJB对象的实例。同时,EJB倡导位置透明性,客户端是不知道EJB对象的具体位置的。为了获得EJB对象的引用,客户端代码从home对象处要求得到一个EJB对象,home对象也是容器自动生成的,它是EJB对象的“制造工厂”它能够完成以下功能:生成、查找(仅限于实体bean)、删除。
#5.Home接口
它继承了javax.ejv.EJBHome 接口,而它扩展了java.rmi.romote接口。开发者必须定义home接口,容器厂商则提供从home接口中产生home对象实现的方法。
#6.Local接口和EJBLocal对象
它们分别是remote接口和EJB对象的另一种更高性能的实现。在原来的规范中,remote接口是将bean的方法暴露在网络上,对这些方法的调用都是通过RMI实现的,而不管所调的bean处于什么位置。在某些情况下,比如客户端所调用的bean与自身在同一个java虚拟机上,由于不得不按照RMI的方法完成,付出了不必要的网络开销,导致性能下降。为了解决这个问题,引入了Local接口,它不扩展Remote接口,是标准的java接口,包含了与Remote接口相似的方法。
#7.LocalHome接口和LocalHome对象
#8.XMl文件
描述了我们的bean对中间件服务方面的要求。
3.EJB Component的调用流程
EJB Component在部署到应用服务器上之后,客户端就可以调用它来完成各种功能。过程如下:
1. 客户端首先通过JNDI服务检索Home对象。在EJB应用部署到应用服务器上之后,容器会自动获得Home对象的信息并将其加入到JNDI中。
2. JNDI服务返回所查找的Home对象的引用。
3. Home对象的创建或者查找EJB对象。
4. Home对象将获得的EJB对象返回给客户端。
5. 客户端利用获得的EJB对象引用,调用业务方法。
6. EJB对象获得对应bean的一个实例并将相应的业务方法调用传递给该实例。
7. Bean实例通过其实现代码,完成相应的业务逻辑并将结果返回给EJB对象。
8. EJB对象将方法的结果返回给客户端。
4.EJB Component开发实例
1. 编写组成EJB Component的各个.java文件,包括接口文件、EJB类文件以及helper等其他需要的文件并编译成.class文件。
2. 编写EJB Component的部署描述。
3. 用jar工具形成EJB-jar文件,其中包含.class文件和部署描述符。
4. 在实际的EJB Server上部署bean,配置相应的参数以及bean需要的资源,这个过程随EJB Server的不同而有所不同。
5. 编写客户端代码对bean的功能进行测试,这一步是可选的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: