Enterprise Bean 執行於 EJB 容器中,本質是封裝業務邏輯的 Java 類別。適用場景:
決策公式:分散式部署 + 分散式事務 + 多型客戶端 = 選擇 EJB
執行業務邏輯操作:用戶註冊、訂單登記、資料庫操作等。
會話概念:從客戶端獲取 EJB 物件開始,多次調用方法,至客戶端釋放或生命週期結束。會話結束時,EJB 容器可能銷毀 Bean 實例。
狀態分類:
| 類型 | 特性 | 效能 | 適用場景 |
|---|---|---|---|
| Stateless Session Bean 無狀態會話 Bean |
容器不管理實例狀態;使用實例池甚至單例模式 | 較好(無狀態同步開銷) | 無需保持會話狀態的業務:查詢、計算、轉換 |
| Stateful Session Bean 有狀態會話 Bean |
為同一客戶端在多次請求間保持狀態資訊 | 較差(需狀態管理、序列化/激活) | 購物車、多步驟精靈表單、對話式流程 |
基於 JMS(Java Message Service)的非同步訊息消費者,實現事件驅動架構。
持久化領域物件(現多由 JPA 取代)。
客戶端僅透過業務介面存取邏輯,與實作解耦。開發前首要決策:支援何種客戶端?
@Remote@Local@Remote 與 @Local@WebMethod 才暴露為 Web Service 操作EJB 3.0+ 大幅簡化開發(註解驅動、無需 Home/Remote 介面、引入 JPA),但現代微服務架構下,Spring + Spring Boot + REST/gRPC 組合更輕量、部署彈性更高。EJB 仍適用於: