Enterprise JavaBeans (EJB) 並非單一產品,而是一套 Java 伺服器端服務框架的規範。軟體廠商依照此規範實作 EJB 伺服器,讓應用程式開發者能專注於商業邏輯,無需操心底層框架的實作細節。EJB 規範詳細定義了交易、安全、命名等最小必要服務,廠商須確保 Enterprise Bean 能使用這些核心服務,但實作方式由廠商自行決定,這也使得單純閱讀規範學習 EJB 變得較為困難。
雖然兩者皆為 Java 組件模型規範,但關注點截然不同:
切勿混淆:JavaBeans 並非僅用於客戶端,EJB 也非專屬伺服器端。若用 JavaBeans 開發伺服器應用,仍需自行設計服務框架;EJB 則提供現成框架,開發者只需遵循其 API,對複雜伺服器端應用顯然更有效率。
管理 EJB 容器的高階進程,提供系統服務存取(JNDI 命名服務、交易服務),並可提供廠商專屬功能(優化資料庫存取、CORBA 服務、SSL 3.0 支援等)。典型例子包括資料庫伺服器、應用伺服器、中介軟體伺服器。
管理一或多個 EJB 類別/實例的抽象層,透過規範定義的介面讓 Bean 存取所需服務。容器提供的服務包括:Session Bean 的主存與次級存儲交換、Entity Bean 的持久性管理、Home Object 與 EJBObject 的建立與查找、交易上下文管理、安全服務、RMI Stub/Skeleton 產生等。目前規範未定義伺服器與容器間的介面,容器通常由伺服器內建提供。
Home 介面定義定位、建立、刪除 EJB 實例的方法(如 create()、remove()),由容器廠商實作為 Home Object。客戶端透過 JNDI 從命名服務取得 Home Object 參考,進而建立或尋找 Bean 實例。
遠端介面列出 Bean 的商業方法。EJBObject 實作遠端介面,作為 Bean 的網絡代理。客戶端無法直接取得 Bean 實例參考,只能透過 EJBObject 呼叫商業方法。EJBObject 接收請求後轉交 Bean 實例,並提供必要的封裝功能(交易、安全上下文等)。客戶端可用 Java RMI 或 CORBA/IIOP 存取。
EJB 透過標準化的服務框架、容器管理的系統級服務、明確的組件介面契約,大幅簡化分散式企業應用的開發。理解其架構核心——伺服器、容器、Home/遠端介面、EJBObject——是掌握 EJB 開發的基石。