快速业务通道

J2EE应用程序打包与部署之二 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22

J2EE应用程序打包与部署之二

时间:2010-12-16

在上一节中,我介绍了打包和部署的基本慨念及其角色和使用限制,在这一节中我将向大家介绍打包应用程序的具体方法。

打包J2EE应用程序

一个J2EE应用程序可以被打包为一个可移植的部署单元,称为商业档案文件(enterprise archive)。一个商业档案文件是一个标准的Java档案文件并带有ear扩展名。这样的文件包括一个或多个J2EE模块及一个J2EE应用程序的部署描述文件。

J2EE应用程序的制作过程主要分为两步:首先,应用组件提供商负责开发EJB模块、Web层程序和应用客户模块。其次,应用程序集成商将这些模块打包在一起以创建一个可以部署的J2EE应用模块。同时应该说明的是,所有J2EE模块都是独立的可部署单位。这使组件提供者无需实现全部应用即可开发独立的功能单元。

但是,我们需要对具体的打包概念和操作有一定理解。下图1说明各种类型的J2EE 模块(EJB、Web、应用客户和应用程序)及它们怎样被部署。虽然这个图只显示了一个独立的被部署的EJB模块,但是所有这四种类型的J2EE模块都可以被独立地部署。为了整合一个应用程序,应用程序整合人员将通过设定相应模块的部署描述文件之间的连接来解决组件之间的依赖关系。每个组件都可能在同一个档案文件中与其他组件具有依赖关系,或是在不同档案文件中。这些依赖关系都必须在部署之前解决。整合人员要保证相同组件在不同的档案文件中的描述保持一致。

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档案文件中的类可以直接在类文件中引入,或在外部引用中声明。

J2EE应用程序打包与部署之二(2)

时间:2010-12-16

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模块部署建议

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类文件组成。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号