首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

深入理解 EJB 組件:Home 介面、容器與 EJBObject 協作機制

     編輯:J2EE

Home 介面:Bean 實例的工廠入口

客戶端透過 Home 介面建立、尋找、刪除 Enterprise Bean 實例。Home 介面包含一或多個 create() 方法,對應 Bean 類別的 ejbCreate()。Home 介面由容器廠商實作為 Home Object,實例化於伺服器端,客戶端透過 JNDI 從命名服務查找取得參考。部署時需指定命名路徑(如 ejb/accounting/AccountsPayable),客戶端需知曉完整路徑與 JNDI 上下文類別。

容器:服務執行的抽象層

容器非單一類別,而是一層代替 Bean 執行系統服務的介面。容器廠商提供運行於 EJB 伺服器中的工具與介面,核心服務包括:

  • Session Bean 的活化/鈍化(主存與次級存儲交換)
  • Entity Bean 的持久性管理
  • Home Object 與 EJBObject 的建立、查找、命名服務發布
  • Bean 生命週期管理(建立、初始化、刪除)
  • 確保商業方法在正確交易上下文中執行
  • 基礎安全服務實作
  • RMI Stub/Skeleton 產生

容器與 EJBObject 緊密協作:EJBObject 接收客戶端呼叫,與容器溝通確定交易上下文,建立後再委派給 Bean 實例。容器廠商自由決定兩者功能分割,但必須確保客戶端能透過 JNDI 存取 Home Object。

Enterprise Bean:商業邏輯的載體

開發者撰寫的類別,實作 javax.ejb.SessionBean 或 javax.ejb.EntityBean 介面。客戶端不直接呼叫 Bean 方法,而是透過 EJBObject 代理。容器在方法呼叫前後插入自身邏輯(如交易邊界管理),稱為「方法插入」。容器安裝 Bean 時產生 EJBObject 的 Stub/Skeleton,Bean 本身不具網絡可見性。

遠端介面與 EJBObject 詳細規範

遠端介面繼承 javax.ejb.EJBObject,方法簽章需與 Bean 實作完全一致(不同於 Home 介面的 create/ejbCreate 對應)。所有方法須拋出 RemoteException。EJBObject 介面定義包含:

  • getEJBHome():取得 Home 介面參考
  • getPrimaryKey():取得主鍵
  • getHandle():取得持久參考
  • remove():移除 Bean 實例
  • isIdentical():比較 Bean 身分

容器為每個 Bean 類別產生專屬的 EJBObject 實作類別,維護 EJBObject 與 Bean 實例的一對一關係。Bean 無需顯式實作 EJBObject 介面,容器安裝時自動產生程式碼實作遠端介面。

客戶端互動流程

  1. 透過 JNDI 查找 Home Object
  2. 呼叫 Home Object 的 create() 或 finder 方法取得 EJBObject
  3. 透過 EJBObject 呼叫商業方法
  4. 完成後呼叫 remove() 釋放資源

支援 Java RMI 與 CORBA/IIOP 兩種通訊協定,實現跨語言存取。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved