<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 36,comments - 31,trackbacks - 0

    ??? EJB 1.0 1.1規(guī)范只定義了一種在EJB組件中引用另一組件的方法,即通過(guò)Bean的遠(yuǎn)程接口。如果兩個(gè)Bean都在同一個(gè)容器之內(nèi),則這種網(wǎng)絡(luò)開(kāi)銷是不必要的。為解決這個(gè)問(wèn)題,EJB 2.0規(guī)范定義了一種新的EJB引用類型,即本地引用。

      一、兩種引用類型

      為了從其他EJB組件訪問(wèn)某個(gè)Bean,容器提供了一種特殊的機(jī)制。這種機(jī)制允許一個(gè)Bean提供者通過(guò)稱為EJB引用的“邏輯名字”引用另一個(gè)EJBHomeEJB容器利用應(yīng)用的部署描述器為EJB構(gòu)造環(huán)境,而這些引用在部署描述器中作為特殊的項(xiàng)目聲明。在部署描述器中,部署者把組件代碼中要用到的EJB引用綁定到其他被引用EJBHome

      如前所述,在EJB 2.0規(guī)范出現(xiàn)之前,在一個(gè)EJB中引用其他Bean只有一種方法,即通過(guò)遠(yuǎn)程接口,它要求進(jìn)行跨越網(wǎng)絡(luò)的遠(yuǎn)程過(guò)程調(diào)用。如果某個(gè)事務(wù)由多個(gè)Bean協(xié)作完成,通過(guò)網(wǎng)絡(luò)進(jìn)行多個(gè)對(duì)象的匯集和釋放將是一項(xiàng)相當(dāng)繁重的工作。

      EJB 2.0規(guī)范新增了一種本地接口類型,允許在同一容器之內(nèi)的Bean直接互相引用,避免了遠(yuǎn)程接口的網(wǎng)絡(luò)開(kāi)銷。本地接口是一種標(biāo)準(zhǔn)的Java接口,而不是從RMI繼承得到。EJB組件的定義可以包含本地接口或遠(yuǎn)程接口,或者兩者都定義。

      本地引用的指定方式和傳統(tǒng)的遠(yuǎn)程引用一樣,即在部署描述器中指定。事實(shí)上,本地引用的部署描述元素與遠(yuǎn)程引用的描述元素完全對(duì)應(yīng)。

      下面的代碼片斷是一個(gè)典型的遠(yuǎn)程引用:

    Product
    ejb/Product
    Entity
    com.xyz.widgets.ProductHome
    com.xyz.widgets.Product
    ../products/product.jar#Product


      下面的代碼片斷是同一Bean的本地引用:

    Product
    ejb/Product
    Entity
    com.xyz.widgets.ProductHome
    com.xyz.widgets.Product
    ../products/product.jar#Product

      下表簡(jiǎn)要說(shuō)明了各個(gè)元素的用途:

      二、創(chuàng)建本地接口,通過(guò)本地接口訪問(wèn)EJB

      要把一個(gè)現(xiàn)有的遠(yuǎn)程接口改為本地接口,有三個(gè)地方必須修改:部署描述器,Bean的接口,以及對(duì)EJB的調(diào)用。前面我們介紹了如何通過(guò)部署描述器指定一個(gè)本地引用,現(xiàn)在我們要把遠(yuǎn)程接口轉(zhuǎn)換成本地接口,然后修改JNDI查找調(diào)用,讓它使用新的本地接口。

      ■ Home接口

      指定Home接口時(shí),現(xiàn)在必須導(dǎo)入的是“javax.ejb.EJBLocalHome”,而不是“javax.ejb.EJBHome”。接口的聲明也必須改變,讓它從“EJBLocalHome”(一個(gè)標(biāo)準(zhǔn)Java接口)繼承,而不是從“EJBHome”(一個(gè)RMI接口)繼承。同時(shí),從該接口定義的方法中唯一應(yīng)該拋出的異常是javax.ejb.CreateException,而java.rmi.RemoteException異常則不再必要。

      ■ 本地接口

      指定本地接口時(shí),現(xiàn)在必須導(dǎo)入“javax.ejb.EJBLocalObject”,而不是“javax.ejb.EJBObject”。接口聲明也必須改變,讓它從“EJBLocalObject”(一個(gè)本地接口)繼承,而不是從“EJBObject”(一個(gè)RMI接口)繼承。

      ■ 執(zhí)行調(diào)用

      創(chuàng)建好接口、設(shè)置好部署描述器之后,剩下的工作就是執(zhí)行JNDI調(diào)用,查找對(duì)其他EJB的引用。調(diào)用Bean的遠(yuǎn)程接口時(shí),javax.rmi.PortableRemoteObject的“narrow()”方法匯集經(jīng)過(guò)RMI的調(diào)用。對(duì)于本地引用,這種開(kāi)銷就不再必要,這時(shí)只需簡(jiǎn)單地進(jìn)行JNDI查找并進(jìn)行適當(dāng)?shù)念愋投ㄐ汀O旅媸且粋€(gè)例子:

      home = (ProductHome) initCtx.lookup("java:comp/env/ejb/Product");

      它不僅提高了效率,而且代碼也比用來(lái)獲取遠(yuǎn)程接口的代碼更直觀易懂。

      本地接口使得處于同一容器內(nèi)的兩個(gè)EJB組件能夠更高效地進(jìn)行通信。對(duì)于實(shí)體Bean的應(yīng)用來(lái)說(shuō),這種技術(shù)尤其有用,因?yàn)榕c客戶程序直接訪問(wèn)實(shí)體Bean相比,在實(shí)踐中,通過(guò)會(huì)話Bean訪問(wèn)實(shí)體Bean得到了更廣泛的認(rèn)可。

      如果你準(zhǔn)備使用本地引用,請(qǐng)先檢查自己的應(yīng)用服務(wù)器平臺(tái)是否支持它。也許,在EJB 2.0規(guī)范獲得廣泛應(yīng)用之前,我們還得等待一段時(shí)間。
    posted on 2006-07-31 10:33 心隨我動(dòng) 閱讀(240) 評(píng)論(0)  編輯  收藏 所屬分類: EJB

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    網(wǎng)站流量統(tǒng)計(jì):
    澳大利亞 ABC 在線英語(yǔ)廣播電臺(tái)
    主站蜘蛛池模板: 又黄又爽一线毛片免费观看| 日韩亚洲人成在线综合日本| 成年网站免费入口在线观看| 国产亚洲精品a在线无码| 91青青国产在线观看免费| 国产亚洲国产bv网站在线| 免费一级做a爰片性色毛片| 在线播放免费人成毛片乱码| 激情内射亚洲一区二区三区爱妻| 亚洲Aⅴ无码一区二区二三区软件| 精品国产污污免费网站| 亚洲AV无码AV吞精久久| 亚洲AV日韩AV永久无码下载| 嫩草影院免费观看| 最近免费中文字幕MV在线视频3| 亚洲色大成网站www永久网站| 亚洲综合av永久无码精品一区二区| 免费大片黄在线观看yw| 国产高清对白在线观看免费91| 亚洲av无码片在线观看| 国产亚洲一区区二区在线| 毛片免费视频播放| 久久免费线看线看| 猫咪www免费人成网站| 亚洲五月激情综合图片区| 亚洲第一视频在线观看免费| 91频在线观看免费大全| 一级**爱片免费视频| 亚洲熟女精品中文字幕| 无码久久精品国产亚洲Av影片| 免费观看国产精品| 国产精品久久久久免费a∨| 久久99免费视频| 有色视频在线观看免费高清在线直播| 亚洲在成人网在线看| 亚洲va无码专区国产乱码| 亚洲欧洲一区二区三区| 国产高清在线精品免费软件| 全免费毛片在线播放| 久久久久高潮毛片免费全部播放| 国产精品成人啪精品视频免费|