部署EJB(SessionBean)内容提要部署描述符文件EJB组件打包EJB组件的部署一、部署描述符文件EJB组件在编写完相应接口文件、Bean类文件之后,需要部署到EJB容器之后才能进行调用将写好的EJB组件部署到不同的EJB容器时,其部署步骤往往很不相同虽然部署到不同的容器时步骤不同,但EJB规范规定容器必须要遵循部署描述符文件中对组件部署时的相关说明,这个部署描述符文件按照EJB的规范,其名必须为ejb-jar.xml,是一个xml类型的文件不同的容器可以附加其他一些部署的功能,这些部署功能通常放在另一个xml类型的部署描述符文件中,这个文件随着EJB服务器的不同,其名称也有所不同,在JBoss服务器,该部署描述符文件名为jboss.xmlEJB容器或相关开发工具都会提供一些专用于部署的工具,协助生成ejb-jar.xml和其他的部署描述文件,并可以协助将EJB组件部署到容器中EJB组件中的部署描述符文件EnterpriseJavaBean类文件Remote接口Home接口ejb-jar.xml其它部署文件1、ejb-jar.xml文件ejb-jar.xml是一个标准的xml类型的文件,它主要负责:向容器说明ejb组件的相关接口和enterprisejavabean类的名称Ejb组件之间的引用关系Ejb组件中enterprisejavabean中相关元素的说明Ejb组件要求容器完成的相关工作一般商用EJB服务器或EJB开发环境都提供了一些部署工具,可以帮助自动生成ejb-jar.xml文件,也可以直接手工编写该文件ejb-jar.xml基本组成要素?xmlversion=1.0encoding=UTF-8?!DOCTYPEejb-jarPUBLIC-//SunMicrosystems,Inc.//DTDEnterpriseJavaBeans2.0//ENejb-jarenterprise-beanssessiondescriptionASampleSessionbean/descriptionejb-nameHelloEJB/ejb-namehomeedu.ec.session.HelloHome/homeremoteedu.ec.session.Hello/remoteejb-classedu.ec.session.HelloBean/ejb-classsession-typeStateless/session-typetransaction-typeContainer/transaction-type/session/enterprise-beans/ejb-jar文件类型说明部分这两段是ejb-jar.xml文件的类型说明,一般均采用上述固定格式的说明即可?xmlversion=“1.0”encoding=“UTF-8”?说明了该xml文件的xml版本号和xml中的字符编码!DOCTYPE说明该文件的用途和文件规范的发布地址?xmlversion=1.0encoding=UTF-8?!DOCTYPEejb-jarPUBLIC-//SunMicrosystems,Inc.//DTDEnterpriseJavaBeans2.0//EN……….………ejb-jar段ejb-jar段定义了该ejb-jar文件中包含的EnterpriseJavaBean的相关信息enterprise-beans子段包含了所有的EnterprieseJavaBean的描述………………………ejb-jarenterprise-beanssessiondescriptionASampleSessionbean/descriptionejb-nameHelloEJB/ejb-namehomeedu.ec.session.HelloHome/homeremoteedu.ec.session.Hello/remoteejb-classedu.ec.session.HelloBean/ejb-classsession-typeStateless/session-typetransaction-typeContainer/transaction-type/session/enterprise-beans/ejb-jar………………………ejb-jarenterprise-beanssessiondescriptionASampleSessionbean/descriptionejb-nameHelloEJB/ejb-namehomeedu.ec.session.HelloHome/homeremoteedu.ec.session.Hello/remoteejb-classedu.ec.session.HelloBean/ejb-classsession-typeStateless/session-typetransaction-typeContainer/transaction-type/session/enterprise-beans/ejb-jarsession段session段用于定义一个SessionBean(会话Bean)此段描述一个SessionBean组件的接口名称及组件类型还有对容器的事务要求………………………ejb-jarenterprise-beanssessiondescriptionASampleSessionbean/descriptionejb-nameHelloEJB/ejb-namehomeedu.ec.session.HelloHome/homeremoteedu.ec.session.Hello/remoteejb-classedu.ec.session.HelloBean/ejb-classsession-typeStateless/session-typetransaction-typeContainer/transaction-type/session/enterprise-beans/ejb-jardescription段该段为可选段,用来对EnterpriseJavaBean组件做一个描述,以便让部署者了解该组件的用途ejb-name段该段定义了组件的名称,可以按照需要给组件起名,但应符合Java中标示符的命名规则………………………ejb-jarenterprise-beanssessiondescriptionASampleSessionbean/descriptionejb-nameHelloEJB/ejb-namehomeedu.ec.session.HelloHome/homeremoteedu.ec.session.Hello/remoteejb-classedu.ec.session.HelloBean/ejb-classsession-typeStateless/session-typetransaction-typeContainer/transaction-type/session/enterprise-beans/ejb-jar………………………ejb-jarenterprise-beanssessiondescriptionASampleSessionbean/descriptionejb-nameHelloEJB/ejb-namehomeedu.ec.session.HelloHome/homeremoteedu.ec.session.Hello/remoteejb-classedu.ec.session.HelloBean/ejb-classsession-typeStateless/session-typetransaction-typeContainer/transaction-type/session/enterprise-beans/ejb-jarhome段该段定义EJB组件的远程Home接口注意,接口名应使用该接口的全名-即包名.类名的方式………………………ejb-jarenterprise-beanssessiondescriptionASampleSessionbean/descriptionejb-nameHelloEJB/ejb-namehomeedu.ec.session.HelloHome/homeremoteedu.ec.session.Hello/remoteejb-classedu.ec.session.HelloBean/ejb-classsession-typeStateless/session-typetransaction-typeContainer/transaction-type/session/enterprise-beans/ejb-jarremote段该段定义了EJB组件的远程接口的名称注意,接口名应使用该接口的全名-即包名.类名的方式ejb-class段该段定义了EJB组件的EnterpriseJavaBean类名称注意,类名应使用全名-即包名.类名………………………ejb-jarenterprise-beanssessiondescriptionASampleSessionbean/descriptionejb-nameHelloEJB/ejb-namehomeedu.ec.session.HelloHome/homeremoteedu.ec.session.Hello/remoteejb-classedu.ec.session.HelloBean/ejb-classsession-typeStateless/session-typetransaction-typeContainer/transaction-type/session/enterprise-beans/ejb-jarsession-type段该段定义了SessionBean的类型Stateless为无状态会话BeanStateful为状态会话Bean………………………ejb-jarenterprise-beanssessiondescriptionASampleSessionbean/descriptionejb-nameHelloEJB/ejb-namehomeedu.ec.session.HelloHome/homeremoteedu.ec.session.Hello/remoteejb-classedu.ec.session.HelloBean/ejb-classsession-typeStateless