EJB 3.0(JSR 220)是一個深層次規範,包含三份文檔面向不同層級開發者:
本文系統梳理 EJB 3.0 規範結構、核心特性、組件模型簡化、工程角色分工,為團隊落地提供方法論指引。
| 特性 | 核心內涵 | 工程價值 |
|---|---|---|
| 聲明式元數據 | 註解或 XML 聲明 Bean/實體行為 | 代碼即文檔,配置與邏輯共存 |
| 異常配置 | 僅在偏離默認行為時顯式配置 | 約定優於配置,極簡樣板代碼 |
| 可伸縮性 | 資源池最大化重用、持久化緩存避免重複查詢/創建 | 支撐高併發、大規模部署 |
| Java 事務 API (JTA) | 分布式事務標準 API,EJB 伺服器作事務管理器 | 跨資源事務一致性保障 |
| 多層安全 | 聲明式角色授權、程序化安全、傳播身份 | 細粒度訪問控制 |
| 可移植性 | 標準化契約,部署於任意實現 EJB 的 AS | 避免廠商鎖定 |
| 可重用性 | 組件可打包重用於多應用 | 資產沉澱、跨專案複用 |
| 持久性 | 實體 Bean → POJO (JPA Entity) | 輕量、可測試、非侵入式持久化 |
同時使用時,XML 配置文件優先於註解。典型用法:註解定義默認行為,部署階段通過 XML 覆蓋環境差異(數據源、安全域、JNDI 名稱)。
在 Java EE 容器內實例化 EJB 後、交付客戶端前,容器按 Bean 定義原則初始化實例屬性:
@EJB:注入 Session Bean Stub@Resource:注入 JNDI 資源、TimerService、SessionContext、DataSource、JMS 連接工廠/隊列@PersistenceContext:注入 EntityManager(類似 Hibernate Session)@PostConstruct、@PreDestroy、@PrePassivate、@PostActivate、@AroundTimeout、@AroundInvokeejbCreate()EntityManager(單例工廠,管理實體生命週期)現代敏捷團隊:角色常由同一人/團隊在不同時期扮演,但職責邊界必須清晰,CI/CD 流水線自動化執行部署者任務。
@TransactionAttribute,僅在非默認傳播行為時顯式標註@RolesAllowed/@PermitAll/@DenyAll 保護業務方法@EJB/@Resource/@PersistenceContext 替代 JNDI 查找@AroundInvoke 攔截器EJB 3.0 以註解驅動、POJO 化、依賴注入、聲明式服務、持久化分離五大支柱,完成了從「重量級組件」到「輕量級服務」的標準化轉身。它不僅吸收了 Spring、Hibernate 等開源創新成果,更以 JCP 標準化形式確立了 Java EE 簡化發展的新基線。掌握其規範結構、核心特性、工程方法論,是構建現代 Java 企業級應用的核心童子功。