核心定位:分布式企業應用的組件模型
EJB (Enterprise JavaBeans) 基於對象組件模型,利用底層事務服務 API,簡化 Java 企業應用開發與部署。核心是一組可重用組件 —— Enterprise Beans,像搭積木構建分布式應用。
運行機制
- 代碼寫好後組合打包,每個文件含一或多個 Enterprise Bean 及配置參數。
- 部署至裝有 EJB 容器的平台。
- 客戶通過 Bean 的 Home 接口定位、創建實例,調用業務方法 (Remote 接口)。
三大核心角色
- EJB Server:管理容器與底層服務橋樑,提供資料庫管理、事務管理等系統服務訪問。
- EJB Container:所有 Bean 實例運行於此,提供系統級服務:
- 安全 (配置描述符定義訪問控制)
- 遠程連接 (隱藏通信細節)
- 生命周期管理 (實例池、激活/失活)
- 事務管理 (配置描述符定義事務屬性,容器處理分布式事務復雜性,保證 ACID)
- EJB Component:含業務邏輯、定義客戶接口 (不受容器/服務器影響)、可部署時定制系統級服務 (安全、事務) 而不修改代碼。
兩大 Bean 類型詳解
Session Bean:會話型業務對象
- 單用戶執行,容器為每個客戶請求創建實例。
- 代表用戶在伺服器端狀態,可參與事務更新共享數據,但不直接持久化數據。
- 生命周期短,用戶會話結束即銷毀;容器崩潰需重建會話 (瞬時性)。
- 有狀態:維護會話期間用戶信息 (如購物車)。
- 無狀態:不保持客戶狀態,方法調用間無狀態,實例可共享支援多用戶,高性能、可建模可重用服務對象。
Entity Bean:持久化數據對象視圖
- 映射數據庫數據 (如表中一行),多客戶可共享訪問同一實例。
- 通過事務上下文訪問/更新數據,保證完整性。
- 生命周期長,狀態持久,隨數據庫數據存在而存在,容器崩潰不影響。
- 持久化管理:容器管理 (CMP) 或 Bean 管理 (BMP)。
- 主鍵標識 (對應數據庫主鍵),客戶通過主鍵定位特定數據。
部署與互操作
Bean 打包為 .jar (含部署描述符) 部署。EJB 架構兼容 CORBA,支援非 Java 客戶端互操作,遵循「一次編寫,到處部署」。