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

EJB 架構演進史與設計目標:從 CGI 到企業級元件模型

     編輯:J2EE

前言

Enterprise JavaBeans (EJB) 自 1998 年 3 月 1.0 版發布以來,確立了伺服器端元件模型標準。本文回顧其歷史脈絡、設計目標與核心優勢。

歷史脈絡:從 Applet 到三層架構

1. Java 早期:Applet 與應用程式

  • JDK 1.0 以 Applet 為核心,瀏覽器載入執行。
  • 一般應用程式需 `main()` 進入點,伺服器端缺乏標準介面。

2. Servlet 的誕生

  • Sun 制定 Java Servlet 規範,專為 Web 伺服器設計。
  • Servlet 容器管理生命週期、請求/回應模型,效率與可攜性優於 CGI。
  • 但 Servlet 僅適合薄薄的中介層,缺乏事務、安全、資源管理等企業級服務。

3. 三層架構興起

  • 兩層架構(胖客戶端直連資料庫)擴展性差、維護難。
  • 三層架構:表現層(瀏覽器/瘦客戶端) → 中介層(應用伺服器/業務邏輯) → 資料層(資料庫/ERP)。
  • 中介層集中管理業務邏輯,支援多種客戶端與資料源。

4. JavaBeans 元件模型

  • 可視化建構工具支援、屬性/事件/方法慣例、內省、持久化、可客製化。
  • 雖常用於 GUI 元件,但規範不限於客戶端,伺服器端同樣適用。

5. J2EE 平台整合

J2EE 整合 EJB、JNDI、JMS、JTA、JDBC、Servlet/JSP、RMI/IIOP 等技術,提供統一部署與執行環境。EJB 為核心伺服器端元件模型,建立在其上層。

EJB 設計目標(規範 1.0)

  1. 標準元件架構,構建分散式、面向物件商務應用。
  2. 跨廠商工具開發元件可組合部署。
  3. 簡化開發:應用開發者無需處理事務、狀態、執行緒、資源共享等底層細節;專家仍可存取低階 API。
  4. 「一次編寫,到處部署」:跨平台免重新編譯。
  5. 涵蓋開發、部署、執行全生命週期。
  6. 定義慣例,多廠商工具產出的元件運行期可互操作。
  7. 相容既有伺服器平台,廠商可擴充支援 EJB。
  8. 相容其他 Java API。
  9. 提供與非 Java 應用互操作能力。
  10. 相容 CORBA。

採用 EJB 的核心效益

  • 開發簡化:EJB 容器提供系統服務(事務、安全、連線池、命名),開發者專注業務邏輯。
  • 伺服器端業務邏輯可攜:標準化 Bean-Container 介面,跨環境部署免改碼。
  • 元件重用:如同 JavaBeans 組裝客戶端應用,EJB 組裝伺服器端應用。
  • 內建企業級服務:分散式物件、事務、資料庫、安全、全域命名。
  • 多廠商互操作:客戶可自由選購元件、容器、伺服器,避免廠商鎖定。
  • 可擴展性:元件嚴格分離,支援伺服器叢集與負載平衡。
  • 保護既有投資:舊系統可包裝為實體 Bean 存取,無須重寫。

深度剖析:JNDI 與 JTA 在 EJB 中的角色

JNDI:命名與目錄服務抽象層

  • API + SPI 架構,支援 LDAP、NIS、COS Naming、檔案系統、RMI Registry、Novell NDS 等。
  • EJB 應用透過 `InitialContext.lookup()` 取得 Bean 參考,不假設部署位置,支援分散式環境。
  • 關鍵概念:Binding、Context、Naming System、Namespace、名稱分類(原子/複合/合成)。

JTA/JTS:分散式事務標準

  • ACID 特性:原子性、一致性、隔離性、持久性。
  • OMG OTS → Sun JTS (Java 映射) → JTA (高階 API)。
  • XA 介面定義資源管理器與外部事務管理器協議。
  • JTA 允許應用、應用伺服器或外部管理器管理事務,介面在 `javax.transaction`、`javax.transaction.xa`。

結語

EJB 將 Java 元件概念從客戶端延伸至伺服器端,配合 J2EE 整合平台,構建出支援任務關鍵企業系統的強健環境。其設計目標與效益至今仍是現代微服務與雲原生架構的靈感來源。

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