之前说了EJB的分类,这篇介绍一下EJB的组成和运行机制。EJB由四部分组成:Home接口、Remote接口或Local接口、Enterprise Bean类和部署描述文件。
EJB组成:
Home接口扩展了javax.ejb.EJBHome或javax.ejb.EJBLocalHome接口,扩展了前者的接口称为远程Home接口,扩展了后者的叫本地Home接口。在开发EJB时,必须要定义Home接口,它的作用是声明创建、删除和查找EJB对象的方法。但是,不用编写接口的实现类,他们的实现类将由容器自动生成。在定义远程接口时,必须要抛出RemoteException异常。可以在Home接口中定义的方法:
Create方法:抛出CreateException异常,返回类型是Remote接口或Local接口类型;
Finder方法:只能在实体Bean;
Home方法:只能在实体Bean;
Remote接口或Local接口,作用是声明处理业务逻辑的各种方法,这些方法将最终开放给客户调用。开发EJB时只定义其中一种或两种均可,但是并不用去实现它们,容器会在编译时根据接口定义和Enterprise Bean类的内容自动创建一个实现了这个接口的类。
Enterprise Bean类:实现了javax.ejb.EnterpriseBean接口的类。此类中定义的方法主要由三种类型:
Remote接口声明方法的实现
Home接口声明方法的实现
容器回调方法的实现
J2EE提供了扩展Javax.ejb.EnterpriseBean接口的新接口,这些接口中声明了容器回调函数,他们是javax.ejb.SessionBean、javax.ejb.EntityBean、javax.ejb.MessageDrivenBean。这三个接口中声明的方法主要供容器回调的函数。其中:
EjbCreate方法:是与Home接口中定义的create方法相对应的实现;名称和参数都要与Home接口中定义的create相匹配,但返回类型是void,和create不一样。
EjbRemove、ejbActivate、ejbPassivate和setSessionContext方法则是提供给容器回调的函数。
部署描述文件:EJB规范中要求的部署描述文件只有一个,既ejb-jar.xml,这个文件描述了一些与容器无关的EJB组件信息。但是对于不同的容器,他们可能还要求提供一些与容器相关的部署描述文件,比如WebLogic还需要weblogic-ejb-jar.xml文件。
EJB运行机制:
服务器端:在EJB组件部署到容器上后,容器会自动生成三个对象,这三个对象是:Home对象、Remote对象或Local对象、Enterprise Bean对象。
客户端调用流程:使用JNDI机制绑定与定位EJB,Context.lookup找回是Home对象,然后在使用Home接口的create方法创建Remote对象;调用Remote接口中的业务方法;使用完EJB应该调用remove方法删除。