同时托管J2EE应用程序的多个版本 - 编程入门网
供用于接受用户输入 的表单,并通过调用 CreateAccount servlet 来创建一个 Account。
CreateAccountJSP ——这是一个 JSP,用来显示创建帐号操作的结果,并 且具有输入表单。 TransferFunds ——这是一个 servlet,这个 servlet 调用 Transfer bean 中的转帐及查看帐号余额的操作。 Transfer ——这是一个 HTML 页面,这个页面提供用于接受从一个帐号到 另一个帐号转帐的输入表单,并且可以查看帐号余额。 TransferFundsJSP ——这是一个 JSP 页面,这个页面显示转帐及查看帐 号余额操作的结果,并且具有输入表单。 同时托管J2EE应用程序的多个版本(3)时间:2011-04-02 IBM Indrajit Poddar图 3 中的类结构图显示了应用程序 MyBank 中的类。 图 3. MyBank 应用程序的类结构图 在上面的示例场景中,让我们来考虑一下同时托管两个不同版本的 MyBank J2EE 应用 程序的问题。我们可以通过添加一个新的帐号持有人名称字段,使我们的应用程序从版本 1 变化到版本 2。在图 2 中,我们用阴影标出了在此改变中受影响的组件。在随后的部 分中,我们将详细讨论因为这种变化而带来的同时托管问题。 类加载冲突 J2EE 应用程序组件的各个版本中的相同类的不同版本之间的类加载冲突,可以通过在 相同的 WebSphere 应用程序服务器 JVM 进程中使用不同的类加载器来解决。 图 4 显示了 WebSphere Application Server 的类加载器的层次。(请参见 参考资 料。) 图 4. WebSphere 类加载器层次 应用程序类加载器负责加载 EJB JAR 文件中的 EJB 模块以及封装在相关的 JAR 文件 中的实用程序类。不同的应用程序加载类可以使相同的 EJB 类以及 EJB 类使用的实用程 序类的不同版本得以分离。J2EE 应用程序中的 Web 模块通过 WAR 类加载器来加载,这 个类加载器是企业应用程序中的应用程序类加载器的一个子类。可以设置使用不同的 WAR 类加载器来加载不同版本的 Web 组件类。可以使用不同的封装选择来分隔不同版本的 J2EE 组件,并且这种做法本身就意味着要使用不同的类加载器。(请参见 封装选择。) 服务器端组件类的不同版本应该尽量使用不同的类加载器使其分离开来。然而,有时 有必要共享客户端类(例如当 EJB stub 属于不同版本的情况),这样可以使不同版本的 应用程序访问同一个组件,例如一个 servlet。这种情况可以在应用程序开发阶段通过使 用不同的包名来解决。(请参见 应用程序设计问题。) servlet 路径冲突 Web 组件的不同版本可能具有不同的 servlet 上下文根,这就可以使 Web 容器识别 出同一个 Web 组件的不同版本,并且可以同时使用不同的 WAR 类加载器加载相同 servlet 类的不同版本。通过这种方式,应用程序版本的粒度可以降到 Web 模块(.war 文件)级上。servlet 上下文根是在企业应用程序档案(.ear)文件中的部署描述符中对 每个 Web 应用程序进行指定的。样本 1 给出了 EAR 部署描述符指定上下文根的例子。 静态内容(例如 HTML 页面和 JSP 页面)的不同版本也可以通过 Web 应用程序的不 同上下文根来唯一指定。要获得相关的示例,请参见 Testing Multiple Versions of Web Applications。 样本 1. 在应用程序部署描述符中为 Web 应用程序的不同版本指定不同的上下文根 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |