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

企業 JavaBeans (EJB) 技術白皮書:架構、元件模型與發展趨勢

     編輯:Java 相關知識

前言:企業應用開發的核心挑戰

  • 分散式複雜度:網路延遲、部分失敗、併發控制、資料一致性
  • 異構環境:多種作業系統、資料庫、中介軟體、舊系統整合
  • 快速交付壓力:業務邏輯頻繁變更,需跨平台部署、重用元件

EJB 架構旨在解決上述問題:讓開發者專注商業邏輯,將系統級服務 (交易、安全、資源管理、分散式通訊) 委派給容器。

EJB 技術設計目標

目標實現機制
簡化分散式開發宣告式交易/安全屬性,取代手寫樣板代碼
關注點分離商業邏輯 (Bean) vs 系統服務 (容器) vs 應用組裝 (Deployer)
工具支援標準化統一元件模型、部署描述符、中繼資料
平台中立Java 平台 + 標準協議 (RMI-IIOP) = Write Once, Run Anywhere
保護既有投資支援舊系統包裝為 Bean (Legacy Wrapper)

企業應用兩大模型與 EJB 對應

1. Session Bean — 流程導向模型

  • 代表客戶的一個**暫時性會話**
  • 執行資料庫讀寫,**在交易中完成**
  • 欄位保存會話狀態,**生命週期隨會話結束**
  • 類比:PL/SQL 預存程序、交易腳本

2. Entity Bean — 資料實體模型

  • 代表資料庫中的**持久實體** (如員工表每一列)
  • 封裝資料與操作方法,**交易性、長壽命** (資料存在即存在)
  • EJB 1.1 強制支援 Session Bean,Entity Bean 為選配;EJB 2.0 起強制支援
  • 類比:面向物件資料庫、Active Record

EJB 架構核心組件


┌─────────────────────────────────────┐
│            Client                   │  (Java App / Web / CORBA / DCOM)
└──────────────┬──────────────────────┘
               │ RMI-IIOP / CORBA / DCOM
┌──────────────▼──────────────────────┐
│          EJB Server                 │  (資源管理、分散式交易、物件生命週期)
│  ┌───────────────────────────────┐  │
│  │       EJB Container           │  │  (Bean 的執行環境)
│  │  ┌─────────┐  ┌─────────────┐  │  │
│  │  │ Session │  │   Entity    │  │  │
│  │  │  Bean   │  │    Bean     │  │  │
│  │  └─────────┘  └─────────────┘  │  │
│  │  ┌─────────────────────────┐   │  │
│  │  │   EJBHome Implementation│   │  │  (工廠、查詢)
│  │  └─────────────────────────┘   │  │
│  │  ┌─────────────────────────┐   │  │
│  │  │   EJBObject (Stub/Skel) │   │  │  (遠端代理、攔截)
│  │  └─────────────────────────┘   │  │
│  └───────────────────────────────┘  │
└─────────────────────────────────────┘

關鍵角色分工

角色職責典型單位
Server Provider分散式交易、底層系統服務資料庫廠商、TP Monitor 廠商
Container ProviderBean 執行環境、安全、交易攔截、狀態管理應用伺服器廠商 (WebLogic, WebSphere, JBoss)
Bean Provider撰寫商業邏輯、實作 Bean 介面領域專家、元件開發商
Application Assembler組裝第三方 Bean 成應用、建立客戶端 GUI系統整合商、應用開發團隊
Deployer設定部署屬性 (交易屬性、安全角色)、調優系統管理員、DBA

EJB 核心特性

1. 宣告式分散式交易

  • 部署描述符指定:Required、RequiresNew、Mandatory、NotSupported、Supports、Never
  • 容器自動管理交易邊界、兩階段提交、回滾
  • Bean 管理交易 (BMT) 選項:程式化控制 UserTransaction

2. 宣告式安全

  • 部署描述符定義 security-role、method-permission
  • 程式化安全:context.isCallerInRole("admin")
  • 建立於 Java 核心安全模型之上

3. 通訊協議獨立

  • 規範不強制線路協議,Server 可支援 RMI、IIOP (CORBA)、DCOM
  • Bean 開發者純 Java 開發,無感知協議差異
  • 客戶端可非 Java (CORBA IDL 映射)

4. 可攜性與擴展性

  • 標準 API 確保 Bean 可部署至任何相容 Server
  • 叢集部署、負載平衡由 Server/Container 實現

開發流程範例:購物車 Session Bean

1. Remote 介面


public interface ShoppingCart extends EJBObject {
    boolean addItem(int itemNumber) throws RemoteException;
    boolean purchase() throws RemoteException;
}

2. Bean 實作類別


public class ShoppingCartEJB implements SessionBean {
    public boolean addItem(int itemNumber) { /* JDBC 代碼 */ }
    public boolean purchase() { /* JDBC 更新訂單、庫存 */ }
    public void ejbCreate(String accountName, String account) { /* 初始化 */ }
    // SessionBean 介面方法...
}

注意:Bean 類別不實作 Remote 介面,由容器生成的 EJBObject 代理實作。

3. Home 介面


public interface CartHome extends EJBHome {
    ShoppingCart create(String customerName, String account) 
        throws RemoteException, BadAccountException;
}

4. 客戶端使用


Context ctx = new InitialContext();
CartHome home = (CartHome) ctx.lookup("application/mall/shopping-carts");
ShoppingCart cart = home.create("Emma", "0507");
cart.addItem(100);
cart.addItem(251);
cart.purchase();

EJB 未來發展趨勢 (歷史視角)

  • EJB 1.0 (1998):奠定基礎架構
  • EJB 1.1:強制 Entity Bean、XML 部署描述符、RMI-IIOP 標準化
  • EJB 2.0:Local Interface (同 JVM 高效呼叫)、Message-Driven Bean (非同步訊息)、CMP 2.0 關聯關係、EJB QL
  • EJB 3.0 (Java EE 5):註解取代 XML、POJO 程式模型、JPA 取代 CMP、Dependency Injection — 徹底簡化
  • 後續 (Java EE 6/7/8, Jakarta EE 9+):CDI 整合、輕量級 Profile、MicroProfile 雲原生導向

相容性與互操作性挑戰

  • 什麼是「EJB 相容 Server」? → Sun 推動相容性認證計畫 (J2EE Compatibility Test Suite)
  • 跨廠商 Server 互操作? → RMI-IIOP 標準化、CORBA 互操作性測試

結語

EJB 技術將「分散式企業應用開發」從手工管理系統服務的泥沼中解脫,確立了 元件化、宣告式服務、關注點分離、標準化部署 的現代企業級架構範式。雖然 EJB 早期版本因複雜度備受詬病,但其核心思想 — 容器管理基礎設施,開發者專注業務價值 — 深深塑造了 Spring、Java EE / Jakarta EE、MicroProfile 等後續技術棧,至今仍是企業級 Java 開發的基因核心。

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