构建一个EJB组件的步骤如下:
1.编写组件接口(EJBObject远程接口,EJBLocalObject本地接口),Home接口,Enterprise Bean等。
2.编写部署描述文件。ejb-jar.xml等。
3.利用Jar工具将以上打包为Ejb-jar文件。如:jar cvfm HelloWorld.jar *
4.发布EJB。
EJB对象:
1.由容器生成的。
2.实现了远程接口或本地接口。
3.客户端通过EJB对象委托调用enterpriseBean的方法。
远程接口:远程访问使能,客户通过iiop调用,客户和EJB可以是分布的。其参数和返回按值传递,要求可以通过网络能传递。
1.继承javax.ejb.EJBObject。
2.定义并公开enterpriseBean的方法。
3.客户端通过该接口与容器生成的EJB对象交互。
4.其中定义的方法都必须抛出java.rmi.RemoteException异常。这是必须的,因为它继了EJBObject,而EJBObject实现了Remote接口。
5.客户端通过远程接口调用enterpriseBean的效率是很底的。原因如下:
(1)首先客户端需调用本地Stub。
(2)Stub将参数格式化为适合网络传输的格式。
(3)Stub与服务器端的Skeleton连接。
(4)Skeleton解释被Stub格式化了的参数。
(5)Skeleton调用EJB对象。
(6)EJB对象连接缓冲,事务处理,安全检查,生命周期服务等工作。
(7)调用enterpriseBean的业务方法。当enterpriseBean完成任务,返回Home时,将重得执行以上步骤。
本地接口:跟一般的接口没什么区别,客户和EJB在同一JVM中运行,参数和返回值没有限制,速度较快。
1.继承javax.ejb.EJBLocalObject。
2.本地用户可以通过本地接口高性能的访问EJB对象。(免去执行远程接口中的第5项工作)
Home接口:通过远程调用创建或查找EJB.与远程接口对应,有相似的限制。
1.继承javax.ejb.EJBHome。
2.用来创建EJB对象。
3.其中有个Create方法返回容器实现了远程接口的EJB对象。并抛出两个异常。java.Rmi.RemoteException和javax.ejb.CreateException。
1.继承javax.ejb.EJBLocalHome。
2.同本地接口相同,它是本地客户端可以使用的高性能Home接口。
3.其中有个Create方法返回容器实现了本地接口的EJB对象。抛出javax.ejb.CreateException异常