客戶端透過 Home 介面建立、尋找、刪除 Enterprise Bean 實例。Home 介面包含一或多個 create() 方法,對應 Bean 類別的 ejbCreate()。Home 介面由容器廠商實作為 Home Object,實例化於伺服器端,客戶端透過 JNDI 從命名服務查找取得參考。部署時需指定命名路徑(如 ejb/accounting/AccountsPayable),客戶端需知曉完整路徑與 JNDI 上下文類別。
容器非單一類別,而是一層代替 Bean 執行系統服務的介面。容器廠商提供運行於 EJB 伺服器中的工具與介面,核心服務包括:
容器與 EJBObject 緊密協作:EJBObject 接收客戶端呼叫,與容器溝通確定交易上下文,建立後再委派給 Bean 實例。容器廠商自由決定兩者功能分割,但必須確保客戶端能透過 JNDI 存取 Home Object。
開發者撰寫的類別,實作 javax.ejb.SessionBean 或 javax.ejb.EntityBean 介面。客戶端不直接呼叫 Bean 方法,而是透過 EJBObject 代理。容器在方法呼叫前後插入自身邏輯(如交易邊界管理),稱為「方法插入」。容器安裝 Bean 時產生 EJBObject 的 Stub/Skeleton,Bean 本身不具網絡可見性。
遠端介面繼承 javax.ejb.EJBObject,方法簽章需與 Bean 實作完全一致(不同於 Home 介面的 create/ejbCreate 對應)。所有方法須拋出 RemoteException。EJBObject 介面定義包含:
getEJBHome():取得 Home 介面參考getPrimaryKey():取得主鍵getHandle():取得持久參考remove():移除 Bean 實例isIdentical():比較 Bean 身分容器為每個 Bean 類別產生專屬的 EJBObject 實作類別,維護 EJBObject 與 Bean 實例的一對一關係。Bean 無需顯式實作 EJBObject 介面,容器安裝時自動產生程式碼實作遠端介面。
create() 或 finder 方法取得 EJBObjectremove() 釋放資源支援 Java RMI 與 CORBA/IIOP 兩種通訊協定,實現跨語言存取。