由于EJB對象可以運行在與客戶不同的機器上,因此客戶不能夠直接實例化EJB對象。EJB推崇位置透明性,因此從這個角
度考慮客戶不應該對EJB對象的位置信息進行關注。
為獲得對EJB對象的引用,客戶代碼需要從EJB對象工廠中請求EJB對象。該工廠負責實例化EJB對象。EJB規范將這種工廠
稱之為Home對象。Home對象的職責主要有:
1、創建EJB對象
2、查找現有的EJB對象
3、刪除EJB對象
同EJB對象一樣,Home對象專屬于特定的EJB容器。Home對象含有容器特定的邏輯,如負載均衡邏輯、借助于圖形化管理
控制臺追蹤信息等。與此同時,Home對象也是EJB容器的組成部分,通過容器提供的工具能夠自動創建它。
Home對象是創建EJB對象的工廠。但是Home對象是如何實例化EJB對象的呢?為創建Home對象,EJB容器需要掌握這方面的
信息。通過指定Home接口給容器即可完成這方面信息的注入。Home接口簡單的定義了用于創建、銷毀和查找EJB對象的方法。
容器的Home對象實現了Home接口。
使用Home接口存在一個問題,即通過Home接口創建EJB實例速度很慢,而且,借助于遠程接口調用EJB實例也是如此。當
訪問EJB對象時,通常會依次觸發如下內容:
1、客戶調用本地存根
2、存根將參數壓包成適合網絡傳輸格式
3、存根借助于網絡將參數傳遞給骨架
4、骨架將參數解包成適合Java的格式。
5、骨架調用EJB對象。
6、EJB對象獲得所需的中間件服務,如連接池、事務、安全性和生命周期服務。
7、EJB對象調用企業Bean實例,Bean實例處理客戶請求。
從EJB2.0開始,客戶能夠通過本地對象(而不是EJB對象)快速、高效的訪問企業Bean組件。具體過程如下:
1、客戶訪問本地對象
2、本地對象獲得所需的中間件服務
3、一旦企業Bean實例處理完客戶請求,則將結果返回給本地對象,最終傳回給客戶。
EJB對象指請求攔截器,遠程接口指供請求攔截器使用的接口,Home對象指工廠,Home接口指工廠接口。
本地接口存在的缺點:
1、只在同一進程中有效。如在同一應用服務器中存在訪問銀行賬號實體Bean的銀行出納會話Bean,如果EJB組件代碼本身依賴
于本地接口實現,則不能夠通過遠程訪問到它。
2、通過引用(傳址),而不是傳值來marshal參數。
部署描述符:借助于部署描述符文件,EJB組件能夠聲明其依賴的中間件服務。然后,EJB容器將通過部署描述符了解到組件
待使用的中間件服務。
posted on 2009-10-29 15:56
王永慶 閱讀(205)
評論(0) 編輯 收藏 所屬分類:
EJB學習筆記