快速业务通道

同时托管J2EE应用程序的多个版本 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ybank.web.v1. CreateAccount 应该创建类型为 com.ibm.mybank.ejb.v1. Account 的 Account。TransferFunds servlet 使用 Transfer EJB,而 Transfer EJB 在这两个版本中没有变化。因此,TransferFunds servlet 可以 使用两者中任一版本的 Transfer EJB。在部署阶段,改变 Transfer EJB 的版本,就如 同将 EJB 引用( java:comp/env/ejb/Transfer )映射到任一版本(也就是说, /ejb/MyBank/v1/Transfer 和 /ejb/MyBank/v2/Transfer 中的任一个)的 Transfer EJB 的 JNDI 一样简单。由于 Transfer EJB 组件不需要使用 accountHolderName,因此它只 使用基本接口 com.ibm.mybank.ejb.Account 。

图 8. MyBank 应用程序的多版本类结构图

同时托管J2EE应用程序的多个版本 - 编程入门网

为了确定 Account EJB 接口的适当的版本,Transfer EJB 组件可以使用 AccountServiceLocator( Service Locator模式)。样本 3 给出了 ServiceLocator 接 口的例子,并且样本 6 给出了 ServiceLocator 模式的实现,这个实现可以用来确定 Account EJB 的版本 1。在部署阶段可以通过使用一个环境项(如样本 5 所示)将适当 版本的 ServiceLocator 实现提供给 Transfer EJB 实现。样本 4 展示了可以如何使 ServiceLocator 用于 Transfer EJB 组件。

EJB stub、tie 和可串行化值/传递对象组成了 J2EE 应用程序的客户和服务器间的接 口。EJB stub 和 tie 是在部署阶段从应用程序代码中的 EJB 接口生成的,可串行化值 对象完全是通过应用程序代码来实现的。如果您想将不同版本的客户和服务器组件混合使 用并且使其兼容,那么 EJB stub、tie 和可串行化值对象就需要具备版本兼容性。

样本 3. Account ServiceLocator 接口 package com.ibm.mybank.service; import javax.ejb.FinderException; import com.ibm.mybank.ejb.AccountLocal; public interface AccountServiceLocator {   AccountLocal findAccountLocal(int accountId) throws FinderException; }

同时托管J2EE应用程序的多个版本(6)

时间:2011-04-02 IBM Indrajit Poddar

样本 4. Transfer EJB 组件中用于得到 AccountServiceLocator 适当版本的代码

private AccountServiceLocator getAccountServiceLocator()  throws Exception {   InitialContext initCtx = new InitialContext();   String acctServLocClassName = (String)initCtx.lookup( "java:comp/env/AccountServiceLocatorClassName");   return (AccountServiceLocator) Class.forName( acctServLocClassName).newInstance();   }

样本 5. 指定 ServiceLocator 适当版本的环境项 <session id="Transfer">   <ejb-name>Transfer</ejb-name>   <home>com.ibm.mybank.ejb.TransferHome</home>   <remote>com.ibm.mybank.ejb.Transfer</remote>   <local- home>com.ibm.mybank.ejb.TransferLocalHome</local-home>   <local>com.ibm.mybank.ejb.TransferLocal</local>   <ejb-class>com.ibm.mybank.ejb.TransferBean</ejb- class>   <session-type>Stateless</session-type>   <transaction-type>Container</transaction-type>   <env-entry>     <description> The name of the AccountServiceLocator class </description>     <env-entry-name> AccountServiceLocatorClassName </env-entry-name>     <env-entry-type>java.lang.String</env-entry- type>     <env-entry-value> com.ibm.mybank.service.v1.AccountServiceLocat

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号