首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

EJB 技術架構全解析:六大角色分工、容器服務、Session/Entity Bean 生命週期與開發流程

     編輯:Java 相關知識

EJB 組件架構:六大角色職責分離

EJB 規範定義了六個標準化角色,實現「開發、部署、運行」關注點徹底分離,支撐大型團隊並行工程。

角色職責產出/關注點典型人員
EJB 組件開發者 (Bean Provider) 編寫業務邏輯、定義接口、提供部署描述符 Bean 類、Remote/Home 接口、ejb-jar.xml、主鍵類 領域專家、業務邏輯開發工程師
應用組裝者 (Application Assembler) 組合多個 EJB-JAR 為完整應用 (EAR),提供 Web 模塊 (JSP/Servlet) application.xml、Web 模塊、EJB 引用綁定 架構師、集成工程師
部署者 (Deployer) 將 EJB-JAR/EAR 安裝到目標環境,綁定資源 (JDBC/JMS)、配置安全角色、生成容器類 綁定後的 EAR、運行時配置、測試腳本 運維工程師、發布工程師
EJB 服務器提供者 (Server Provider) 提供底層分布式基礎設施:事務管理器、對象監視器、集群、負載均衡 應用服務器產品 (WebLogic, WebSphere, JBoss) 中間件廠商 (BEA, IBM, Red Hat)
EJB 容器提供者 (Container Provider) 實現 EJB 契約:生命週期管理、事務攔截、安全檢查、實例池、持久化引擎 EJB 容器運行時、部署工具、監控工具 通常與服務器提供者同一廠商
系統管理員 (System Administrator) 維護硬件/OS/網絡/服務器運行環境,監控運行狀態、調優性能 運行日誌、監控指標、備份恢復策略 IT 運維團隊

EJB 容器核心服務:開發者無感知的強大後盾

  • 事務管理:聲明式事務屬性 (Required, RequiresNew, Mandatory, NotSupported, Supports, Never);分布式兩階段提交 (JTA/JTS);自動回滾 (RuntimeException/SystemException)。
  • 安全管理:方法級權限 (method-permission);角色映射 (Principal → Role);程序化安全 (isCallerInRole, getCallerPrincipal);傳播安全上下文 (IIOP Service Context)。
  • 遠程連接透明化:Stub/Skeleton 生成、IIOP/JRMP 協議處理、序列化/反序列化、異常映射 (RemoteException) —— **開發者如調用本地對象**。
  • 生命週期管理:實例創建/銷毀、激活/鈍化 (Stateful/Entity)、實例池 (Stateless/Entity)、緩存策略 (Entity) —— **最大化吞吐與內存利用率**。
  • 資源管理:DataSource/JMS ConnectionFactory 連接池、JCA 資源適配器、環境屬性注入。
  • 持久化服務 (CMP):O/R 映射、EJB QL 查詢、關係管理 (CMR)、延遲加載、批次優化、主鍵生成。

兩大 Bean 類型深度對比

Session Bean:業務流程執行者

特性Stateless (無狀態)Stateful (有狀態)
狀態保持無會話狀態 (實例間等價)保持特定客戶會話狀態
實例共享池化共享,任意實例服務任意調用專屬實例,單線程訪問
生命週期短 (方法調用期間)長 (會話期間),支持激活/鈍化
容器故障影響無狀態丟失,重新獲取即可狀態丟失 (除非持久化鈍化存儲)
事務方法級事務邊界可跨方法保持事務 (延遲提交)
典型場景工具服務、驗證、查詢、批次處理購物車、向導式流程、多步驟業務

Entity Bean (EJB 2.x):持久化領域模型 (現已由 JPA 取代)

  • 本質:數據庫表行的對象視圖,主鍵標識 (PrimaryKey 類)。
  • 共享訪問:多客戶可同時訪問同一實體 (主鍵相同),容器管理並發鎖 (數據庫行鎖/樂觀鎖)。
  • 持久化策略:
    • CMP:容器管理 (映射描述符生成 SQL),可移植、性能優、支持 CMR 導航。
    • BMP:Bean 管理 (手寫 ejbLoad/ejbStore JDBC),靈活但複雜。
  • 生命週期:長期存在 (隨數據庫數據),容器崩潰不丟失 (持久化存儲)。
  • 查找/創建/刪除:ejbFindByPrimaryKey (強制)、ejbFindXXX、ejbCreate/ejbPostCreate、ejbRemove。
  • 激活/鈍化:ejbActivate/ejbPassivate 配合 ejbLoad/ejbStore 同步狀態。

EJB 開發標準流程

  1. 定義接口與類:
    • Remote/Home 接口 (EJB 2.x) / 業務接口 (EJB 3.x+)
    • Bean 實現類 (實現 SessionBean/EntityBean 或 POJO + 註解)
    • 主鍵類 (Entity Bean 復合主鍵時)
  2. 編寫部署描述符 (EJB 2.x: ejb-jar.xml + 廠商 XML) 或 註解 (EJB 3.x+: @Stateless, @Entity, @TransactionAttribute 等)。
  3. 打包 EJB-JAR:類文件 + 描述符 → jar cvf myejb.jar ...。
  4. 部署:
    • 直接部署 JAR 到容器,或
    • 打包為 EAR (application.xml + 模塊) 部署。
  5. 容器生成輔助類:部署工具執行 rmic -iiop、生成 Stub/Tie、容器攔截器、持久化映射代碼。
  6. 客戶端調用:JNDI 查找 Home → create/find → 業務方法調用。

EJB 版本演進與 WebLogic 8.1 建議

  • EJB 1.0:已廢棄。
  • EJB 1.1:強制 RMI-IIOP,XML 描述符,WebLogic 8.1 支持。
  • EJB 2.0:重大里程碑 — 本地接口、CMR、EJB QL、Message-Driven Bean、HomeBusiness 方法。**WebLogic 8.1 強烈推薦使用此版本**。
  • EJB 2.1:Web Service 集成 (JAX-RPC),Timer Service。
  • EJB 3.0+ (Java EE 5+):POJO 程式設計模型、註解驅動、JPA 替代 Entity Bean、依賴注入、攔截器。**現代標準**。

總結

EJB 架構通過**六大角色分工**、**容器系統級服務**、**Session/Entity 兩大 Bean 模型**,實現了企業級業務邏輯的標準化組件化、分布式部署與聲明式服務質量。WebLogic 8.1 時代推薦 EJB 2.0 (本地接口 + CMP + CMR) 為最佳實踐。現代 Jakarta EE / Spring 生態繼承了其核心思想 (IoC、AOP 事務、JPA、CDI),理解 EJB 經典架構,是掌握現代框架本質的捷徑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved