| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> JAVA文章 >> JAVA基础 >> 文章正文
J2EE应用部署(一):基础篇        【字体:
J2EE应用部署(一):基础篇
作者:佚名    文章来源:不详    点击数:    更新时间:2006-4-16


J2EE产品提供者 

负责实现J2EE平台,包括在规范中定义的所有J2EE API和其他功能。比如,J2EE应用服务器的供应商。 

应用组件提供者 

负责提供J2EE组件,例如EJB应用或Web应用。J2EE规范中的许多角色都具有应用组件提供者的特征,比如文档编写者、JSP页面编写者、资源适配器开发者等。 

应用组装者 

负责把一个或者多个J2EE组件打包成EAR文件,构造出J2EE应用。应用组装者还要负责创建J2EE应用部署描述器,说明应用依赖的各种外部资源,比如类库、安全角色等。通常,应用组装者要用到J2EE产品提供者和工具提供者提供的工具。 

工具提供者 

提供自动化J2EE应用创建、打包、部署过程的工具,例如为EAR文件自动生成部署描述器的工具,自动创建EAR文件的工具。 

部署者 

负责把Web应用和EJB应用部署到服务器环境上。部署者不负责部署资源适配器包和应用客户端包,但可能要负责为这些组件进行额外的配置。这些组件虽然被打包成为J2EE EAR文件的一部分,部署企业应用时却不必考虑。它们是J2EE应用的一部分,但不必象Web应用和EJB容器那样经过一个“激活”过程。资源适配器包是置入合法JCA实现的简单库,虽然它们被打包进J2EE EAR文件,但它们不在J2EE容器环境下运行。因此,由于资源适配器包不包含J2EE容器,它们的激活不需要J2EE部署者的特别干预。应用客户端程序在J2EE容器的环境下运行,但它们不部署到应用服务器上。客户端程序独立运行,部署者不负责为这些程序配置容器环境。 

系统管理员 

负责为应用服务器和J2EE应用配置网络和运行环境,负责监视和维护J2EE应用的运行。 

在本文的讨论过程中,我们主要的角色是应用组装者和部署者。 

1.3 不能封装到EAR文件的组件 

大多数基于Web的J2EE应用只由Web和EJB应用构成,EAR文件能够满足封装应用的基本需求。然而,EAR文件缺乏封装复杂J2EE应用的能力,比如,J2EE经常要用到下面这类组件,但它们无法在EAR文件中声明: 
JDBC DataSource对象。 
JMS ConnectionFactory和Destination对象。 
JMX(Java Management Extension)的MBean。 
      
在应用服务器之内运行的一些JMS消费者,例如作为ServerSession一部分运行的MessageConsumer。 

当应用被部署或卸载时触发运行的一些类(这些类是供应商提供的私有扩展,没有在J2EE规范中定义,但供应商一般都提供它们)。 

当前,这些组件必须由系统管理员通过专用管理接口手工配置和部署。随着时间的推移,这些组件的应用也将日益增加,为了支持应用的整体移植性,让EAR文件支持这些组件的封装也变得日益重要。 

二、类装载模式 

当一个类被引用时,Java虚拟机(JVM)必须装入被引用的类。JVM利用一个标准的类装入机制把类装入内存,这个从源文件装入Java类的机制称为类装载器。Java类可以从磁盘、网络或其他媒体装入,它们可以驻留在任何地方。多个类装载器可以按照父-子关系链接在一起,形成一种层次结构。由子类装载器装入的类能够看到(能够使用)由任意父类装载器装入的类;由父类装载器装入的类不能看到由任意子类装载器装入的类。类装载器、EAR文件与应用部署有着重要关系,因为应用服务器可能采用专用的类装载器部署应用模块。 

如果在一个系统中,Web应用需要访问某个EJB,它就必须能够装入它所需要的那些类。由于这意味着不同模块之间的依赖关系,为了解决依赖问题,应用服务器必须为EAR类装载器考虑不同的结构方案。 

独立的应用程序部署在它自己的类装载器中。这意味着,如果分别地部署一个Web应用和一个EJB应用,每个应用的类将分别装入各自的、级别相同的类装入器,Web应用内的类不能看到另一个类装载器装入的类。如果Web应用想要使用那些分开部署的EJB,就会出现问题。 

在EAR文件出现之前,许多开发者先部署EJB,然后以Web应用WEB-INF\lib目录一部分的形式,再次封装同一EJB JAR文件。这样,同一类文件必须放入两个不同的地方,才能让应用正常地运行。显然,这是一种应当避免的情形。EAR文件的引入就是为了解决这个问题。EAR文件不仅是一种方便的封装格式,而且它还提供了一种特殊的类装载模式,允许EAR文件内的应用访问其他应用的类。 

J2EE 1.3规范没有具体规定EAR类装载器应该如何运作。在决定类装入方式时,应用服务器供应商有着很大的自由。实现EAR类装载器之前,供应商必须决定: 

EAR文件中所有应用的所有类由单一的类装载器装入,还是不同应用的文件由不同的类装载器装入? 

在EAR文件中的不同应用之间,是否存在类装载器的父-子关系?例如,如果两个EJB应用依赖于log4j.jar,那么,是否应该由父类装载器装入log4j.jar,由子类装载器装入两个EJB应用,从而维持适当的可见性关系? 

如果类装载器之间存在层次关系,那么这种层次关系允许扩展到什么程度? 

多个EJB之间存在固有的关系,但Web应用没有。那么,EJB应用的装载方式是否应该和Web应用的不同,以便保持Web应用的完整性? 

2.1 在EJB 2.0之前 

在EJB 2.0 Public Final Draft 2之前,供应商在选择类装载模式方面有着很大的自由。如果JSP页面和Servlet要使用某个EJB,那么它们只需能够装入EJB的Home接口、远程接口、公共类和Stub类。这里所谓的公共类包括异常类、参数类等,它们应该放入一个依赖JAR文件,作为一个有着依赖关系的包装入。在这种模式下,供应商必须为依赖于EJB的Web应用选择一种装入Home接口、远程接口和Stub类的方式。 

下面是这种类装载模式的一个简单实现(客户端应用在另一个虚拟机之内运行,与所有其他组件隔离,因此下面的模型不包含客户端应用的类装入过程。): 

上一页  [1] [2] [3] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 课程介绍(11): SL-351 Java数…

  • 对一个简单的JDBC包装器的扩…

  • 数据源在JDBC中的应用

  • JDBC系列教程(一)

  • Servlet中jdbc应用高级篇

  • 选择开发移动应用程序的数据…

  • 应用Java技术实现数据库应用…

  • 如何用JDO开发数据库应用

  • jdbc应用--数据库连接全集

  • DB2中SQLJ应用示例

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |