同时托管J2EE应用程序的多个版本 - 编程入门网
了做到这一 点,您必须将应用程序分成多个 .ear 文件。在我们的样本应用程序中,图 9 显示的 EAR 文件被分成下面几个部分:每个版本的 EJB 有一个 .ear 文件(请参见图 10 和 11 )、每个版本的 Web 应用程序的 .ear 文件包含多个版本的 .war 文件、每个版本的 Web 应用程序(请参见图 12)。
图 10 给出了 Account EJB 版本 1 的 .ear 文件。注意其中有两个 JAR 文件: MyBankCMPEJBv1 包含 Account EJB 版本 1 的特定接口和实现。 MyBankCMPEJBCommonUtility 包含版本 1 和版本 2 中共用的接口和实现,以及 Transfer EJB,并且 Transfer EJB 在从版本 1 到版本 2 的变化中不会发生任何变化。 类似的,图 11 给出了 Account EJB 版本 2 的 .ear 的组成。相同的 .jar 文件 MyBankCMPEJBCommonUtility 被封装到 MyBankCMPEJB [v1|v2] EAR 的两个版本中。 图 12 给出了 Web .ear 文件的组成,以及 MyBankCMPWebv1.war 和 MyBankCMPWebv2.war (包括特定于版本的 CreateAccount servlet)和 MyBankCMPWebCommon (包括和版本无关的 TransferFunds servlet)。 图 10. 应用程序 EAR EJB 版本 1 的组成 同时托管J2EE应用程序的多个版本(8)时间:2011-04-02 IBM Indrajit Poddar图 11. 应用程序 EAR EJB 版本 2 的组成 图 12. Web EAR 的组成 通过这种方法拆分应用程序可以使不同版本的 EJB 组件隔离开来,这种隔离是通过使 用不同的应用程序类加载器实现的,一个 EAR 文件对应一个类加载器。不同版本的 Web 组件模块通过不同的 WAR 类加载器而隔离开来,一个 Web 模块对应一个 WAR 类加载器 。由于 WAR 类加载器是应用程序类加载器的子类,所以所有版本的 Web 模块都可以封装 在同一个企业应用程序中。为了使应用程序类加载器或 Web 类加载器可以加载通用的实 用程序类 JAR 文件,就必须在类路径头部指定这些 JAR 文件依赖于 EJB JAR 或 WAR 清 单文件(manifest file)。样本 7 给出了 MyBankCMPEJBv1.jar 中的清单文件的例子; 样本 8 给出了 MyBankCMPWebv1.war 中的清单文件的例子。 同时托管J2EE应用程序的多个版本(9)时间:2011-04-02 IBM Indrajit Poddar样本 7. MyBankCMPEJBv1.jar 中用于指定相关 JAR 文件的清单文件 样本 8. MyBankCMPWebv1.war 中用于指定相关 JAR 文件的清单文件 图 13. 在 WebSphere 应用程序服务器 V5 中配置共享类库 为了使 Web 应用程序能够调用 EJB JAR 组件,需要将 Web 应用程序中使用的 java:comp/env EJB 引用绑定到适当版本的 EJB 本地接口的 JNDI 名。如果 Web 应用程 序组件和 EJB 组件通过不同的类加载器来加载,那么 EJB 组件的本地接口是不能使用的 。您必须使 EJB 远程接口的客户端类对应用程序类加载器可用。这可以通过两种方式来 得以实现: EJB 远程接口客户端类可以作为实用程序 JAR 文件封装到 Web EAR 文件中,并且可 以通过修改用于每个 Web 应用程序 WAR 文件的清单文件,在类路径头部下面添加 EJB 客户端类实用程序 JAR 文件。(请参见样本 8)。 将 EJB JAR 作为共享的类库添加到 Web WAR EAR 应用程序中。 跟踪分布式组件的变化 当将多个版本的 J2EE 应用程序组件部署到同一个 WebSphere 域中时,为了安全起见 ,应该进行一些运行时检查。另外,保留对部署模块版本变化的跟踪记录也是一种可行的 做法。 Java Product Versioning Specification 将 Java 包定义为一个可以开发、封 装、验证、升级及分布式的一致性单元。JAR 文件的清单文件( |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |