J2EE应用措施打包与陈设之二
副标题#e#
在上一节中,我先容了打包和陈设的根基慨念及其脚色和利用限制,在这一节中我将向各人先容打包应用措施的详细要领。
打包J2EE应用措施
一个J2EE应用措施可以被打包为一个可移植的陈设单位,称为贸易档案文件(enterprise archive)。一个贸易档案文件是一个尺度的Java档案文件并带有ear扩展名。这样的文件包罗一个或多个J2EE模块及一个J2EE应用措施的陈设描写文件。
J2EE应用措施的建造进程主要分为两步:首先,应用组件提供商认真开拓EJB模块、Web层措施和应用客户模块。其次,应用措施集成商将这些模块打包在一起以建设一个可以陈设的J2EE应用模块。同时应该说明的是,所有J2EE模块都是独立的可陈设单元。这使组件提供者无需实现全部应用即可开拓独立的成果单位。
可是,我们需要对详细的打包观念和操纵有必然领略。下图1说明各类范例的J2EE 模块(EJB、Web、应用客户和应用措施)及它们奈何被陈设。固然这个图只显示了一个独立的被陈设的EJB模块,可是所有这四种范例的J2EE模块都可以被独立地陈设。为了整合一个应用措施,应用措施整合人员将通过设定相应模块的陈设描写文件之间的毗连来办理组件之间的依赖干系。每个组件都大概在同一个档案文件中与其他组件具有依赖干系,或是在差异档案文件中。这些依赖干系都必需在陈设之前办理。整合人员要担保沟通组件在差异的档案文件中的描写保持一致。
图1 J2EE措施包布局
J2EE规格对付组件和陈设单位配置必然数量的需求,大都来说都是为适当的组件操纵而筹备的,可是组件容器并不需要及时执行这些法则中的大大都。
1、EJB模块
一个EJB模块凡是被包装和陈设为EJB Java档案文件和一个带有jar扩展名的Java 档案文件。这是ejb最小的可陈设和可利用单元。一个尺度的EJB模块包罗:
1) Java类文件,包括enterprise bean界说及其当地和长途接口;
2) EJB代码中所依赖的Java类文件。这里是指在J2EE平台之外的代码文件;
3) EJB陈设描写文件,其提供了应用措施顶用于enterprise bean的布局和整合信息。凡是来说整合信息是可选的,而且只包括在整合应用措施中。
应该说明的是,ear文件与尺度的jar文件存在显著的区别:ear文件包括一个陈设描写文件,它包括了一个或多个enterprise bean的主要形容信息。
EJB Java档案文件除了可以在处事器端利用之外,一个EJB Java档案文件开拓人员还可以开拓包括用户措施需要会见的EJB类文件,这些类大大都包括在EJB Java档案文件。应该留意的是,处事器端的组件实现类文件凡是不会包括在客户端的Java档案文件。在EJB Java档案文件中或client Java档案文件中的类可以直接在类文件中引入,或在外部引用中声明。
#p#副标题#e#
2、EJB模块打包准则
1) 如何将组件打包成EJB模块
一个典范的贸易应用凡是包罗多个ejb,个中一些ejb大概是商用组件,或是其他的第三方库函数;而应用集成人员大概从以下要领中选择:
a、将应用措施中的每个ejb包装在本身的EJB模块中。在这种要领里,每个ejb具有本身的陈设描写文件并与其依赖的类文件一起打包在ejb模块中。这个要领的长处在于它可以最大化每个ejb的可重用性,并留给应用集成人员很大的自由在ejb模块中选择以成立J2EE应用措施。假如开拓人员的ejb具有很强的可重用性,这种要领是值得推荐的。在这种环境下,应用集成人员可以精确地反复操作他们但愿反复操作的那些ejb。
b、在同一个EJB模块里包装应用措施中所有ejb。在这种要领中,所有ejb和它们的依赖类被一起包装在一个EJB模块里。这种要领较其他要领实施起来是最简朴的。
c、将所有与一个应用措施有干系的ejb打包在一个EJB模块里。在这种要领中,所有的ejb将按照它们成果上的特性分类并安排在同一个ejb模块中。
在以上几种要领中,第三种选择模块性最好,并被很多J2EE应用措施回收。这主要是因为这种要领可以取得可重用性和简朴性的均衡。同时它也促进了第三方组件的黑箱操纵,这对付包括很大都字签名的组件的应用系统是十分重要的。别的这种要领在J2EE处事器需要陈设在差异Java虚拟机上的各个ejb模块时尤其有效,它可以将相关联的ejb编组在一起,同时答允长途挪用。
1、JNDI定名空间内的当地接口
大大都EJB实现措施都是通过Java定名和目次接口(Java naming and directory interface)来界说ejb当地接口的,一个陈设描写文件凡是会将组建的ejb定名编入进其JNDI定名中。不外由于凡是没有对当地接口的长途会见,当地接口是无需在全局的JNDI定名空间内发布的。在组件通过JNDI寻找当地接口时,ejb容器并不需要通过JNDI定名空间处处提供当地bean的实现,相反地,ejb容器需要实现所有当地接口的JNDI查找,并按照请求返回相应的工具。
2、EJB模块陈设发起
#p#分页标题#e#
ejb类文件凡是会有没在bean当地和组件接口声明的民众要领。陈设描写文件不该该为这些要领拟定事务或安详属性。由于ejb容器只会浸染于民众组件或当地接口的要领挪用,所以它可觉得这些要领提供事务支持或安详限制。
在某些时候,容器打点的实体bean的主键类大概对付组件提供商来说是未界说或未知的,这时,开拓人员可以将实体bean的陈设描写文件中的主键配置为java.lang.Object。
一些实体bean大概浸染于数据库中的贸易数据,包罗在容器打点的耐久性下打点和更新这些数据。开拓人员需要认识到假如打消这些bean的陈设,那么它们所打点的数据表格也将会被删掉。同时,沟通的组件也大概在一个应用措施的多个处所被应用,而当这些bean利用容器打点的耐久性时,开拓人员需要思量是否将该组件的所有实例存储在一个表中或多个表中,并适内地设置其耐久性行为。
3、Web模块
Web模块凡是是被打包并陈设为Web档案文件(Web archive,WAR),即Java档案文件带有.war扩展名。这种文件也是Web资源中最小的可陈设和可用单位。凡是一个Web模块包括:
1) Servlet的Java类文件及其依赖文件;
2) JSP文件及其辅佐类;
3) 静态文档,html页,图像,声音文件;
4) Java Applet及类文件;
5) Web陈设描写文件。
与其他陈设单位范例差异,WAR文件凡是不能由一个类载器(classloader)上载,这主要由于其内部布局和一个可载入的JAR文件是差异的;与其他模块范例一样,一个WAR文件可以作为一个Web应用独立地陈设或包括在EAR文件中,一起陈设为一个J2EE应用措施。
应用客户模块
应用客户模块凡是是打包在Java档案文件并带有.jar扩展名,应用客户模块凡是包罗实现客户端措施的Java类文件和应用客户陈设描写文件; 一个应用客户凡是会利用EJB JAR文件提供商提供的客户jar文件,而这个客户jar文件由用户需要会见的ejb类文件构成。