EJB 是 Java EE 中的企業級業務組件技術,與 Servlet、JSP 並列為 Java EE 三大組件。EJB 提供分布式對象訪問框架,極大簡化可擴展企業應用開發。
容器職責:實例管理、生命週期、安全、事務、遠程通訊、併發、集群負載均衡
通訊流程:
存根與骨架由容器自動生成,開發者無需編寫通訊代碼。
| 類型 | 子類型 | 特點 |
|---|---|---|
| 會話 Bean | 無狀態 | 不保持會話狀態,實例可共享,效能最高 |
| 有狀態 | 保持客戶端會話狀態,一客戶端一實例,支援鈍化/激活 | |
| 單例 | 應用級單一實例,支援併發訪問,不鈍化 | |
| 訊息驅動 Bean | - | 處理異步訊息(JMS),無客戶端介面,由容器監聽隊列觸發 |
狀態:不存在 → 存在
@PostConstruct → 就緒@PreDestroy → 銷毀實例 → 不存在實例池化管理,高效復用。
狀態:不存在 → 就緒 → 鈍化 → 就緒 → 不存在
@PrePassivate → 序列化狀態到存儲 → 從內存移除(鈍化)@PostActivate → 就緒(激活)@PreDestroy狀態:不存在 → 存在(應用啟動時創建,關閉時銷毀)
無鈍化/激活,支援併發訪問(@Lock 控制鎖策略)。
狀態:不存在 → 存在
MessageListener 介面onMessage()@Stateless、@Stateful、@Singleton、@MessageDriven)@EJB、@Inject)@AroundInvoke)實現橫切關注點EJB 是構建分布式企業應用的核心組件模型,容器托管機制極大降低系統級複雜度。現代 EJB 3.x 配合 CDI、JPA 等規範,開發體驗大幅提升,仍是大型金融、電信級系統的主流選擇。