Java EE 5 (2006) 是企業級 Java 歷程裡的里程碑:徹底簡化開發,引入註解驅動、POJO 化 EJB、標準化 JPA、整合 JSF/Web Services。雖已演進至 Jakarta EE 10/11,但理解 EE 5 的設計哲學對維護遺留系統、掌握現代規範演進脈絡至關重要。金蝶 Apusic 等國產中間件率先通過 EE 5 認證,推動國內落地。
@Stateless、@Entity、@PersistenceContext 直接標註在類/欄位上,大幅減少 ejb-jar.xml、persistence.xml、faces-config.xml 體積。@Stateless 即成 EJB。Entity Bean 變為 JPA Entity,支援脫管狀態、繼承映射。@EJB、@Resource、@PersistenceContext 直接注入容器管理資源,無需 JNDI 查找樣板代碼。| 規範 | 版本 | 關鍵特性 |
|---|---|---|
| EJB | 3.0 | POJO Bean、註解、攔截器、計時服務、簡化實體 Bean (JPA) |
| JPA | 1.0 | 標準 ORM、JPQL、EntityManager、脫管/合併、樂觀鎖 @Version |
| JSF | 1.2 | Facelets (非標準)、AJAX 元件、驗證/轉換器、導航規則 |
| Servlet | 2.5 | 註解 @WebServlet、@WebFilter、@WebListener、非同步開始支援 |
| JSP | 2.1 | EL 2.1 整合、標籤檔、jsp:attribute/body |
| JAX-WS | 2.0 | 註解 @WebService、@WebMethod、JAXB 2.0 綁定、MTOM/WS-Addressing |
| Java EE Connector | 1.5 | 工作管理、安全合約、訊息流入 |
EE 5 規定:Web 元件 (Servlet/JSP/JSF) 直接使用 JTA 時,事務不能跨越多個客戶端請求。即一個 HTTP 請求內可開啟/提交事務,但無法實現「長事務」(跨頁面向導、工作流)。解決方案:
@ConversationScoped) 管理長事務。javax.* → jakarta.* (EE 9+)。@ApplicationScoped 等) 滿足 90% 場景,EJB 僅用於分散式事務/遠端介面/計時服務。