Apache Geronimo 是一种认证的 Java 2 Platform Enterprise Edition(J2EE) 1.4 应用服务器。大多数人在想到 J2EE 时,会想到事务管理、Web 应用程序和异步消息传递等东西。但是,有了这些特性也不一定能够通过 J2EE 认证。应用服务器必须提供任务关键型生产系统所需的许多工具。这些工具之一是远程部署。Geronimo 是为满足大多数部署场景而设计的,所以它包含对远程部署的支持。
远程部署和 JSR 88
远程部署是任何 J2EE 认证的应用服务器的重要特性之一。任务关键型应用服务器需要运行在专用的系统上。安全性也是许多系统必须关注的问题,所以会限制对系统的访问。受到限制的访问意味着应用程序不能在进行部署和运行的系统上进行构建和打包。
Java 社区认识到了远程部署的重要性。2000 年 10 月,引入了 Java Specification Request 88:Java Application Deployment(JSR 88)来解决这个问题。Java Community Process(JCP)通过 JSR 对应用程序的许多方面进行标准化。这种标准化的一个例子是应用程序的打包。Web 应用程序具有标准的布局并打包为 Web 应用程序存档(WAR)。这使应用程序开发人员在开发 Web 应用程序时不需要太多考虑在什么环境中部署应用程序。这是经典的 Java 格言 “一次编写,到处运行 ” 在企业部署方面的应用。
与通过 JCP 建立的其他 JSR 一样,JSR 88 是许多行业领先公司的代表之间协商的成果,比如 IBM、Sun Microsystems、BEA 和 Oracle。这个规范引入了一种将任何 J2EE 应用程序部署到任何 J2EE 应用服务器的标准方式。它提供了部署(尤其是远程部署)的许多重要方面的细节,从而实现了标准化。它确定了应该如何识别和定位远程应用服务器,并为访问应用服务器建立了基本的安全模型。它还选定了应用服务器应该支持的几个核心部署阶段,比如部署、取消部署和重新部署。
许多工作成果集中在 JSR 88 中。这个规范的草案于 2001 年 10 月提交给 JCP。当然,在此之前,所有主流应用服务器厂商已经在自己的产品中提供了某种远程部署支持。不同的厂商采用不同的方法,因此关于如何对部署进行标准化有许多争论。JCP 拟订了一个草案,于 2002 年 1 月向公众发布。JSR 88 于 2002 年 6 月定稿并获得批准。自此之后,它在 2003 年进行了更新,并于当年随 Java Platform, Enterprise Edition(Java EE) 5 的发布再次更新。
JSR 88 使独立软件厂商能够开发可以部署在任何 J2EE 认证应用服务器上的 J2EE 应用程序。当然,在支持 JSR 88 的同时,每个应用服务器的开发者可以添加额外的部署功能。例如,Apache Geronimo 通过它的 Geronimo 部署计划提供了许多高级部署特性。部署计划将关于应用程序的重要元数据告诉 Geronimo。对于 Web 应用程序,要做的重要事情之一是设置应用程序的上下文根。这样就很容易让应用程序出现在 http://<host> 这样的位置,而不需要在 URL 上提供额外路径。本文包含一个简单的 Web 应用程序,其中包含一个 Geronimo 部署计划。
Web 应用程序示例
为了了解远程部署在 Geronimo 上如何工作,最好有一个要部署的应用程序。图 1 显示本文使用的简单 Web 应用程序 remoteApp 的布局。
图 1. 简单 Web 应用程序 remoteApp 的文件结构