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

Enterprise JavaBeans 組件全景解析 (三):部署流程、持久化策略、事務安全與三層架構實戰

     編輯:Java 相關知識

EJB 部署流程:不只是安裝,更是代碼生成

部署由容器支援,高層次步驟:

  1. 開發者提供:Bean 類別、Home/Remote 介面、部署描述符、環境屬性、Manifest
  2. 容器分析 ejb-jar 封裝檔,生成必要類別:Home/Remote 介面實作、Stub/Skeleton、Bean 子類 (注入容器管理代碼)
  3. 將 Home 介面綁定至 JNDI 命名空間

生成類別為容器專用,不具可攜性;Bean 本身保持標準化可攜。

持久化:Bean-managed vs Container-managed (CMP)

Bean-managed Persistence (BMP)

  • 開發者在 Bean 中直接撰寫 JDBC/SQLJ 程式碼
  • 直觀但降低可攜性,綁定特定資料庫

Container-managed Persistence (CMP)

  • 部署描述符宣告 containerManagedFields 列表
  • Bean 程式碼 零資料庫存取呼叫
  • 部署時由容器工具建立欄位到資料源的對應映射 (通常非全自動)
  • 優點:Bean 可攜性極高,甚至可切換異構資料源

事務管理:容器代管 vs Bean 自管

Container-managed Demarcation (CMT) — 推薦預設

  • 部署描述符指定事務屬性:TX_REQUIRED、TX_SUPPORTS、TX_NOT_SUPPORTED 等
  • 容器攔截方法調用,自動開啟/提交/回滾事務
  • 客戶端與 Bean 皆無需撰寫事務代碼

Bean-managed Demarcation (BMT)

  • 部署描述符指定 TX_BEAN_MANAGED
  • Bean 內使用 javax.transaction.UserTransaction 手動控制 begin/commit/rollback
  • 容器不介入事務邊界

安全性模型

  • AccessControlEntry: 方法/Bean 級別綁定 Identity (用戶/角色)
  • RunAs 身分: Bean 存取資源/其他 Bean 時使用的身分 (特定帳號、系統帳號、呼叫者身分)
  • 均在部署描述符宣告,容器強制執行

CORBA 與 EJB:互補而非競爭

「EJB 技術極佳補充 CORBA。CORBA 提供強大標準化基礎設施,EJB 讓在其上構建應用更容易。」—— EJB FAQ

  • RMI/IIOP: EJB 規範要求 RMI 做分散式呼叫,IIOP 做傳輸協議,實現與 CORBA 互操作
  • IDL 映射: Bean 介面對應 IDL,C++ 等 CORBA 客戶端可直接調用
  • 命名服務: JNDI 橋接 CORBA Naming Service (COS Naming)
  • 事務互操作: JTA/JTS 對應 OTS,支援跨 EJB/CORBA 物件的全域事務

CORBA 映射確保多廠商 EJB Server 互操作性:跨廠商 Bean 存取、混合事務、統一客戶端。

三層 EJB 應用架構實戰

三層架構圖

層級角色技術
第一層 (瘦客戶端)呈現Web Browser (HTML/GIF/HTTP)
第二層 (Web 應用伺服器)控制器、資料封裝、介面生成Servlet (控制器)、JavaBean (資料封裝)、JSP (動態頁面)、EJB Server 功能
第三層 (企業資源)資料與業務邏輯關聯式/物件資料庫、事務監視器、legacy 系統

庫存更新業務流程範例

  1. Browser 提交表單 → Servlet (控制器) 解析請求
  2. Servlet 透過 JNDI 取得 Entity Bean Home → findByPrimaryKey() 定位產品
  3. 呼叫 Remote 介面更新庫存 → 容器透明啟動事務 (CMT) → 容器透明持久化寫入 DB
  4. 結果存入 JavaBean (資料封裝) → 轉發 JSP 呈現 → 回傳 Browser

架構優勢總結

  • 業務邏輯封裝於可重用、可攜 Bean
  • 既有系統零/少改動整合 (包裝成 Entity Bean)
  • 運行時服務 (事務、持久化、並發) 外移至容器,Bean 專注業務
  • Servlet 控制邏輯與 JSP 呈現分離,獨立演進
  • 全 Java 技術棧,JVM 即可攜
  • 保護既有 IT 投資 (Legacy 包裝策略)

總結

EJB 代表 Java 進入任務關鍵企業系統的關鍵里程碑。將業務邏輯與中間件服務分離,讓開發者專注核心價值,容器負責底層複雜度。多廠商支援與 CORBA 互操作,確保開放、可擴展的企業級平台。

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