為什麼學習 EJB?
Enterprise JavaBeans (EJB) 是 Java EE(現 Jakarta EE)中處理業務邏輯、事務、安全、持久化的核心伺服器端組件模型。雖然 Spring 生態佔據主流,但 EJB 仍在大型銀行、電信、政府遺留系統中廣泛應用,且其規範定義的事務管理、依賴注入、攔截器等思想深刻影響了現代框架設計。
推薦學習大綱(模塊化)
階段一:核心基礎
- EJB 概述: 組件模型、容器服務、版本演進(2.x vs 3.x+ 註解式開發)。
- 創建第一個 EJB 應用: Maven 專案結構、
ejb-jar.xml(可選)、部署至 WildFly/GlassFish/Payara。
階段二:會話 Bean 三大類型
- 無狀態 Bean (@Stateless): 高併發、無會話狀態、池化管理,最常用。
- 有狀態 Bean (@Stateful): 維護客戶端會話狀態、被動化/活化機制、適用購物車等場景。
- 單例 Bean (@Singleton): 應用級單例、啟動順序 (@Startup)、併發管理 (@Lock)。
階段三:進階企業級特性
- 持久化整合: JPA EntityManager 注入、容器管理事務 (CMT) vs Bean 管理事務 (BMT)。
- 訊息驅動 Bean (@MessageDriven): JMS 整合、異步處理、事務性消費。
- 攔截器 (@AroundInvoke, @InterceptorBinding): AOP 切面、日誌、審計、性能監控。
- 定時器服務 (@Schedule, TimerService): 排程任務、持久化定時器、集群環境下的單點執行。
- 依賴注入 (@EJB, @Inject, @Resource): CDI 整合、限定符、生產者方法。
階段四:安全與遠程訪問
- 安全 (@RolesAllowed, @PermitAll, @DenyAll, @RunAs): 聲明式授權、JAAS 整合。
- JNDI 綁定與查找: 全局 JNDI 名稱規則、遠程 EJB 調用 (RMI/IIOP, HTTP)。
- Web 服務整合: JAX-WS / JAX-RS 發布 EJB 為 SOAP/REST 端點。
階段五:實戰與遷移
- 實體關係映射: @OneToMany, @ManyToMany, 級聯操作、延遲加載陷阱。
- 查詢語言 (JPQL/Criteria API): 動態查詢、分頁、鎖模式。
- 應用打包與部署: EAR 結構、模塊類加載隔離、生產環境調優。
優質學習資源推薦
- 官方教程: Jakarta EE Tutorial - Enterprise Beans(最權威、持續更新)。
- 經典書籍: 《Enterprise JavaBeans 3.1》 (O'Reilly),作者 Andrew Lee Rubinger 等。
- 實戰視頻: Udemy "EJB 3.x for Beginners"、YouTube "Java Brains EJB Playlist"。
- 伺服器文檔: WildFly 官方文檔
EJB 3 Reference Guide 章節極其詳盡。
學習建議
搭建 WildFly + PostgreSQL/MySQL 環境,跟著教程敲代碼,**重點掌握「容器管理事務邊界」、「會話 Bean 生命周期」、「攔截器鏈執行順序」** 三大核心機制。遇到 NoSuchEJBException、TransactionRolledbackLocalException 等異常時,翻閱伺服器日誌而非盲目搜尋,能更快建立心智模型。