亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

靈活使用EJB的本地和遠程接口(三)

2019-11-18 12:33:58
字體:
來源:轉載
供稿:網友

  JNDI 綁定和源代碼分析
  EJB 模塊
  從 DualEJBModule01 開始。在 EJB Deployment Descriptor 編輯器面板中,選擇 Beans 選項卡,然后選擇 DualEntity,并且確保 WebSphere Bindings 部分中的 JNDI 名設置為 “ejb/dual/ejb/DualEntityHome” 。保存所有的更改。首先,讓我們研究 DualEJBModule02 項目中 Dualsession EJB 的 ejb-jar.xml 的代碼片斷:
  ...
  
    useLocal
    java.lang.Boolean
    true
  

  
    doTrace
    java.lang.Boolean
    false
  

  
    ejb/DualEntityRemoteHome
    Entity
    dual.ejb.DualEntityRemoteHome
    dual.ejb.DualEntityRemote
    DualEJBModule01.jar#DualEntity
  

  
    ejb/DualEntityLocalHome
    Entity
    dual.ejb.DualEntityLocalHome
    dual.ejb.DualEntityLocal
    DualEJBModule01.jar#DualEntity
  

  ...
  
  這里,第一個元素(具有名稱“useLocal”)是用來控制 DualEntity EJB 的本地接口的使用的。第二個條目(具有名稱“doTrace”)預備只用于跟蹤。已實現的跟蹤功能是相當基本的,但是對于我們的目的來說足夠了。 相應的 Java 代碼看起來像是下面這樣的:
  
  public class DualSessionBean implements javax.ejb.SessionBean {
    PRivate javax.ejb.SessionContext mySessionCtx;
    private boolean doTrace;
    private boolean useLocal;
    private DualEntityRemoteHome entityRemoteHome;
    private DualEntityLocalHome entityLocalHome;
  
    public void setSessionContext(javax.ejb.SessionContext ctx) {
     mySessionCtx = ctx;
     try {
       Context initCtx = new InitialContext();
       Boolean option = null;
       option = (Boolean)initCtx.lookup("java:comp/env/useLocal");
       useLocal = option.booleanValue();
       option = (Boolean)initCtx.lookup("java:comp/env/doTrace");
       doTrace = option.booleanValue();
       if (doTrace)
        System.out.println("DualSessionBean#setSessionContext: useLocal="
           +useLocal);
       Object homeObject = null;
       if (useLocal){
        homeObject = initCtx.lookup("java:comp/env/ejb/DualEntityLocalHome");
        entityLocalHome = (DualEntityLocalHome)homeObject;
       } else {
        homeObject = initCtx.lookup("java:comp/env/ejb/DualEntityRemoteHome");
        entityRemoteHome = (DualEntityRemoteHome)
        javax.rmi.PortableRemoteObject.narrow(homeObject,
           DualEntityRemoteHome.class);
       }
     } catch(NamingException ne){
       // process exception here...
     }
    }
  ...
  
  在 Java 代碼中,EJB 環境變量是作為無狀態會話 Bean 對象的生命周期的類變量存儲的。DualEntity 的本地接口和 Remote Home Interface 是通過引用訪問的;這是首選的方式,并且遵守 EJB 2.0 規范。相對地,ejb-jar.xml 包含描述這些引用的 ejb-ref 和 ejb-local-ref 元素。打開 EJB Deployment Descriptor 編輯器,然后選擇 Beans 選項卡。確保 JNDI 名設置為“ejb/dual/ejb/DualSessionHome”。然后轉到 References 選項卡,確保對 DualEntity 兩個引用指向 JNDI 名“ejb/dual/ejb/DualEntityHome”。必要時可以更改這些值,然后保存所作的更改。
  
  Web 模塊
  DualWebModule03project 標準的 J2EE Web 部署描述符包含兩個重要的代碼片段。第一個指定該 Servlet 的初始參數:
  
  ...
   
   useLocal
   true
   

   
   doTrace
   true
   

       
     jndiProviderURL
     iiop://localhost:2809
   

   
     jndiNameOnServer
     ejb/dual/ejb/DualSessionHome
   

   
     initialCtxFactoryClassName
     com.ibm.ejs.ns.jndi.CNInitialContextFactory
   

  -->
  ...
  
  上面的代碼在意義上類似于前面討論的 EJB 環境參數。注釋掉的 Web 部署描述符部分后面將需要用于分離容器(Separate Containers)拓撲。The Web deployment descriptor section that is commented out will be needed later for the Separate Containers topology. 假如這三個附加的參數沒有注釋掉,在與此體系結構有關的邏輯將通過該 Servlet 的 init() 方法進行調用。(稍后將對此進行更多的介紹。)第二個代碼片段描述了需要用來建立 Servlet 與 EJB 通信的引用:
  
  ...
  
   ejb/DualSessionRemoteHome
   Session
   dual.ejb.DualSessionRemoteHome
   dual.ejb.DualSessionRemote
   DualEJBModule02.jar#DualSession
  

  
   ejb/DualSessionLocalHome
   Session
   dual.ejb.DualSessionLocalHome
   dual.ejb.DualSessionLocal
   DualEJBModule02.jar#DualSession
  

  ...
  
  相對地,DualServlet 的源代碼包含該 Servlet 的 init() 方法中的處理邏輯。下面是與處理 EJB 引用有關的代碼片段:
  
  ...
  final String JNDI_NAME_LOCAL = "java:comp/env/ejb/DualSessionLocalHome";
  final String JNDI_NAME_REMOTE = "java:comp/env/ejb/DualSessionRemoteHome";
  ...
    if (useLocal) {
     initCtx = new InitialContext();
     homeObject = initCtx.lookup(JNDI_NAME_LOCAL);
     sessionLocalHome = (DualSessionLocalHome) homeObject;
    } else {
     homeObject = initCtx.lookup(JNDI_NAME_REMOTE);
     sessionRemoteHome =
       (DualSessionRemoteHome) PortableRemoteObject.narrow(
       homeObject,
       DualSessionRemoteHome.class);
    }
  ...
  
 ?。ㄏ螺d的源代碼中的初始參數處理邏輯實際上更復雜,因為它還處理分離容器(Separate Containers)拓撲。)可以在 DualWebModule03 的 Web Deployment Descriptor 編輯器窗格中,首選選中 DualServlet 的所有設置(包括 Initialization 部分在內),然后轉到 References 選項卡,選中 EJB 和 EJB Local 這兩個子選項卡。兩個引用應該指向 WebSphere Bindings 部分中的JNDI 名“ejb/dual/ejb/DualSessionHome”。
  
  項目依靠性總結
  現在我們基本上完成了這些模塊,讓我們再次回顧一下所有項目(包括 EAR 在內)的依靠性:
  
  ·DualJavaModule00 沒有依靠性。
  
  ·DualEJBModule01 沒有依靠性。
  
  ·DualEJBModule02 在“Java Build Path”、“Java JAR Dependencies”和“Project References”·設置中必須有 DualJavaModule00、DualEJBModule01 項目。
  
  ·DualWebModule03 在“Java Build Path”、“Project References”和“Web Library Projects”設置中必須有 DualJavaModule00、DualEJBModule02 項目。
  
  ·DualEARForEJBContainer 在“Project References”設置中必須有 DualJavaModule00、DualEJBModule01、DualEJBModule02;EAR 部署描述符必須有指向 EJB 模塊和 Java 模塊的引用。
  
  ·DualEARForAllInOne 必須有指向所有模

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩69视频在线观看| 国产精品成人av在线| 亚洲欧美精品一区二区| 亚洲欧美日韩视频一区| 97久久久免费福利网址| 在线播放精品一区二区三区| 久久久久久久久91| 日韩免费中文字幕| 色av吧综合网| 激情成人中文字幕| 国内成人精品视频| 亚洲免费影视第一页| 精品网站999www| 欧美重口另类videos人妖| 国产成人精品免高潮在线观看| 国产免费成人av| 国产成人精品在线观看| 国模极品一区二区三区| 国产精品18久久久久久麻辣| 国产精品亚洲片夜色在线| 91性高湖久久久久久久久_久久99| 日韩亚洲第一页| 欧美在线视频免费观看| 在线精品国产欧美| 韩国日本不卡在线| 亚洲精品电影网在线观看| 九九热精品在线| 一区二区三区回区在观看免费视频| 亚洲风情亚aⅴ在线发布| 在线视频日本亚洲性| 国产精品久久久久久久久| 91丝袜美腿美女视频网站| 久久久久亚洲精品国产| 38少妇精品导航| 中文字幕综合一区| 欧美日韩国产色| 久久久久久久91| 亚洲黄色www| 亚洲福利在线观看| 久久久亚洲福利精品午夜| 亚洲区bt下载| 青青草99啪国产免费| 国产精品jvid在线观看蜜臀| 欧美做爰性生交视频| 久久久久久香蕉网| 亚洲欧洲美洲在线综合| 国产精品91在线观看| 亚洲国产精品高清久久久| 国产精品xxxxx| 国产欧美一区二区三区久久人妖| 国产精品久久久久久久久久新婚| 久久青草精品视频免费观看| 亚洲一区二区三区四区视频| 亚洲香蕉成人av网站在线观看| 国产一区二区免费| 亚洲一区二区三区久久| 亚洲美女黄色片| 欧美午夜电影在线| 成人福利网站在线观看11| 亚洲国产成人91精品| 久操成人在线视频| 91精品综合视频| 2018国产精品视频| 久久久久久91| 日韩一区二区三区在线播放| 91丨九色丨国产在线| 97视频在线观看免费高清完整版在线观看| 欧美影院成年免费版| 国模吧一区二区| 国产精品久久久久久久天堂| 久久久av亚洲男天堂| 日韩av电影在线播放| 伊人成人开心激情综合网| 最新69国产成人精品视频免费| 91亚洲国产成人精品性色| 最近2019中文字幕大全第二页| 欧美在线免费视频| 亚洲人成电影网站色xx| 国产suv精品一区二区三区88区| 欧美激情精品久久久久久| 一级做a爰片久久毛片美女图片| 亚洲国产精彩中文乱码av| 97在线视频免费| 久久精品国产亚洲一区二区| 国产一区二区黄| 亚洲国产精品热久久| 成人午夜在线视频一区| 国产精品激情自拍| 亚洲成人黄色网址| 一区二区三区www| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品自产拍高潮在线观看| 欧美国产日韩精品| 国产日韩换脸av一区在线观看| 亚洲福利视频专区| 欧美激情网友自拍| 在线视频日本亚洲性| 久久福利视频网| 亚洲人成网站999久久久综合| 精品爽片免费看久久| 国产精品久久久久久久久久ktv| 一本色道久久88综合日韩精品| 国产成人亚洲精品| 成人a免费视频| 久久久久久久久久久人体| 全球成人中文在线| 红桃av永久久久| 在线观看国产精品日韩av| 欧美精品电影免费在线观看| 久久久电影免费观看完整版| 欧美性感美女h网站在线观看免费| 亚洲人在线视频| 国产精品入口福利| 欧美日韩国产激情| 日韩精品免费综合视频在线播放| 欧美另类极品videosbest最新版本| 国产日韩欧美夫妻视频在线观看| 日本精品久久中文字幕佐佐木| 成人性生交大片免费观看嘿嘿视频| 国产精品欧美激情在线播放| 欧美最猛性xxxxx(亚洲精品)| 亚洲精品在线看| 91tv亚洲精品香蕉国产一区7ujn| 欧美在线视频一二三| 国产精品69精品一区二区三区| 欧美最猛性xxxxx免费| 77777亚洲午夜久久多人| 日本老师69xxx| 久久精品国产欧美亚洲人人爽| 久久久www成人免费精品张筱雨| 精品成人久久av| 亚洲大胆美女视频| 日韩美女免费线视频| 国产一区二区三区在线免费观看| 日本久久久久亚洲中字幕| 亚洲激情第一页| 亚洲视频在线免费观看| 日本sm极度另类视频| 久久精品91久久香蕉加勒比| 中文字幕精品国产| 精品国产一区二区三区久久狼5月| 亚洲人成电影网站色xx| 欧美亚洲在线观看| 久热99视频在线观看| 亚洲图片在区色| 亚洲欧美日韩精品| 国产精品第3页| 亚洲成人网av| 欧美日韩一区二区免费视频| 国产精国产精品| 国内精品伊人久久| 亚洲综合最新在线| 精品国产91乱高清在线观看| 成人综合网网址| 色yeye香蕉凹凸一区二区av| 久久久久久久久久国产精品| 一区二区在线视频播放| 92国产精品久久久久首页| 欧美一级大胆视频| 欧美专区国产专区| 91午夜理伦私人影院| 日韩亚洲欧美中文在线| 欧美高清视频在线观看| 色哟哟亚洲精品一区二区|