服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

j2ee应用程序打包与部署之一


  什么是打包和部署?

  j2ee平台的主要特色之一在于开发人员可以在其之上整合不同的组件,这个将组件整合为模块并将模块整合为商业应用程序的过程叫做打包。而在一个可使用环境的安装和定制应用程序的过程则叫做部署。为了能够更好地被定制,应用程序的组件需要是可配置的,然而,开发人员不应该持续开发不同的配置机制,相反地,使用标准机制并对配置过程提供相当的灵活度是非常重要的。

  j2ee平台为打包和部署提供了相应的工具,使得其过程相对简单。主要来说,它使用java档案文件(jar)作为组件和应用打包之后的标准整合结果,同时它还使用基于xml的描述文件来配置组件和应用程序。j2ee技术规范为j2ee应用程序的结构建立和生成提供了指导,其中一条原则就是与打包(packaging)有关,具体的技术规范为诸如ejb、jsp网页和servlet等组件的打包提供了指导;j2ee平台规格描述提供一个将一个或多个组件集成为一个模块的方法,即为任何组件类型的最小单元提供独立部署,一个模块可以直接部署至j2ee容器中,或多个模块可以集合起来组建一个j2ee应用程序;例如,几个ejb组件可以被打包为应用模型中的一个ejb模块,同时这个ejb模块也可以进一步与其他模块结合以建造一个完整的j2ee应用。

  j2ee打包综述

  一个j2ee应用程序包括下列部分:一个或者多个j2ee组件;一个j2ee应用程序实施描述符。 在一个或者多个异类j2ee组件需要彼此使用对方的时候,必须生成一个j2ee应用程序(application)。在建立一个j2ee应用程序时必须考虑到多个方面,其中包括:

  1、可以打包成一个j2ee应用程序的j2ee组件类型;

  2、当人们生成j2ee包时扮演的角色;

  3、当前的j2ee打包限制;



  不同厂商为满足j2ee组件交互而采用的类装入方式。

  1、用j2ee打包组件

  一个j2ee组件,例如servlet或ejb,是与组件描述中定义的接口保持一致的独立功能软件单位,并且这类软件很明显地依赖于其生存环境。组件也许是一个单一的类,但也经常是类、接口和资源的集合。j2ee平台提供五种类型的组件:ejb,servlets和jsp,applet,应用客户程序以及连接器(connector)。

  j2ee平台中的模块和应用程序被作为部署单元而打包和部署,这种过程所得到的压缩文档与jar文件类似,但具有一个指定的内部结构和文件扩展名。通常来说,存在四种不同类型的j2ee平台模块:

  (l)ejb模块,其中包含ejb文件及相应类;ejb模块是一个可实施的单元,包括ejb、关联的库jar文件以及资源。 ejb模块被预打包成jar文件,在jar文件的meta-inf目录中有一个实施描述符 (ejb-jar.xml)。

  (2)web模块,其中包含web层的组件及资源;web模块是一种可以实施的单元,由java servlets、jsp网页、jsp标志库、库jar文件、html/xml文档及其他公共资源如图片,applet类文件等组成。一个web模块打包成一个web archive file,也称为一个war文件。war文件类似于jar文件,只是war文件包含一个web-inf目录,在web.xml文件中包含实施说明。

  (3)应用客户模块,其中包含应用客户类;应用程序客户模块jar文件包含一个独立的java应用程序,它将要在应用程序客户容器中运行。这个应用程序客户jar文件包含一个专门化的实施描述符,其构成与ejb jar文件类似。jar文件包含运行独立的客户所需的类,当然还包括访问jdbc、jms、jaxp、jaas或者ejb客户所需的任何客户库。

  (4)资源适配器模块,其中包含java连接器(connector)、资源适配器和帮助库函数及相关资源。资源适配器rar文件包含在一个企业信息系统中实现一个java connector architecture(jca)资源适配器所需的本机(native)库和java类。资源适配器并不在一个容器内执行,而是设计成一个桥梁在应用程序服务器和外部企业信息系统之间运行;这些部件每个都是单独开发和打包的,除了j2ee ear文件和自己的实施描述符之外;j2ee ear文件是一个或者多个这些组件的一种结合,成为一个带有自定义实施描述符的统一的包。

  2、打包角色

  在建立、实施和使用ejb、web应用程序或者其他组件时,不同的人将扮演不同的角色。j2ee技术规范定义了一个宽泛的系统平台角色(platform role),这是开发者在生成企业应用程序时扮演的。尽管在开发和实施过程中人们会想到有多种角色,但实际上这些角色只不过是一些逻辑上的概念,目的是使得人们可以更好地规划和执行一个应用程序。一个人或者机构很可能(而且希望是)具有多重角色。ear文件的建立、实施或者使用中的普通角色包括:

  1) j2ee产品提供者

  j2ee产品提供者提供了j2ee系统平台的一个实现,其中包括所有适当的j2ee api及此技术规范中定义的其他特性。j2ee产品提供者典型情况下是一个应用程序服务器,web服务器或者数据库系统厂商,它通过把技术规范和组件映射到网络协议而提供了一个适当的实现。

  2) 应用程序组件提供者

  应用程序组件提供者提供了一个j2ee组件,例如一个ejb应用程序或者一个web应用程序。在j2ee技术规范中还有许多角色可以具有应用程序组件提供者的特点。这些包括文档开发者、jsp作者、企业bean开发者和资源适配器开发者。

  3) 应用程序组装者

  应用程序组装者负责把一个或者多个j2ee组件结合到一个ear文件中以生成一个j2ee应用程序。应用程序组装者还负责生成j2ee应用程序实施描述符,并且标识出此应用程序可能需要的任何外部资源。其中包括类库、安全性角色和命名环境。应用程序组装者一般将使用j2ee产品提供者和工具提供者提供的工具。
  
  4) 工具提供者

  工具提供者提供相关的实用程序来自动实现j2ee应用程序的生成、打包和实施。工具提供者可以提供相关的工具来自动为一个ear文件生成实施描述符、生成ear文件以及把ear文件实施到应用程序服务器。工具提供者提供的实用程序既可以是独立于系统平台的(适用于不论任何环境下的所有ear文件),也可以是与系统平台相关的(适用于一种特定环境下的本机功能)。

  5) 实施者

  实施者负责把web应用程序和ejb应用程序实施到服务器环境中。实施者并不负责实施资源适配器档案文件或者应用程序--客户档案文件,但也可能会负责这些组件的相关配置。这些组件即使是作为j2ee ear文件的一部分打包,在企业应用程序实施的时候也不会被考虑。它们是j2ee应用程序的组成部分,但并不通过一个运行时的"激活过程(activation)"而组合,而web应用程序和ejb容器在实施过程中要经过这个激活过程。资源适配器档案文件就是一个合法jca实现的库。尽管它们被打包成一个j2ee ear文件的组成部分,但它们并不在j2ee容器的上下文环境中运行。因此,由于资源适配器档案文件并没有j2ee容器,它们在激活过程中也不需要有j2ee实施者。

  应用程序客户程序确实是在j2ee容器的上下文环境中运行,但是它们并不实施在应用程序服务器中。应用程序客户程序独立运行,实施者并不负责为这些程序配置容器环境。

  实施者生成准备好供容器使用的web应用程序、ejb应用程序,applet和已经针对应用程序服务器的目标环境定制的应用程序客户。

  6) 系统管理员

  系统管理员负责配置网络和运行环境供应用程序服务器和j2ee应用程序在其中运行。系统管理员还负责监视和维护j2ee应用程序。

  3、打包的限制

  ear文件满足了打包应用程序的基本要求, 因为大多数基于web的j2ee应用程序完全由web和ejb应用程序组成。但是ear文件缺乏打包复杂的j2ee应用程序的能力。例如,下列组件不能在一个ear文件中被声明,但经常用于一个j2ee应用程序:

  1) jdbc datasource对象;

  2) jms connectionfactory和destination对象;

  3) jmx mbeans;

  4) 在应用程序服务器中运行的一些jms消费者,如messageconsumer作为seversession的一部分运行;

  5) 当应用程序被实施和卸出(un-deployed)时触发的类。(这些类是由厂商提供的专门扩展,不是j2ee技术规范的规定。但是,所有的厂商一般都提供它们。)

  目前这些组件都需要被手工配置以及通过实施厂商提供的管理接口配置和实施,并且这也是系统管理员的责任。随着时间的推移,这些项目的使用将会增加,因而ear文件支持这些组件的打包也是很重要的,以便使应用程序的移植成为可能。

  在下一部分中我将介绍如何打包j2ee应用程序

扫描关注微信公众号