背景:伺服器端 Java 的演進
- Applet(JDK 1.0):瀏覽器端可下載程式。
- Servlet:Sun 為 Web 伺服器定制的請求-回應模型組件,取代 CGI,效率更高、可移植。
- 三層架構:瀏覽器(瘦客戶端)→ 中間層(應用伺服器/中間件)→ 後端資料庫。解決兩層架構擴展性與客戶端膨脹問題。
JavaBeans 組件模型
可視化建構工具拖拉拽組裝應用,特徵:設計模式(Getter/Setter/事件)、可定制、自省、持久化。不限於 GUI,亦可用於伺服器端。
J2EE 整合平台
Sun 主導 Java Community Process 制定開放標準,核心技術包含:
- EJB(伺服器端組件模型)
- JNDI(命名/目錄)、JTA/JTS(事務)、JMS(訊息)、JSP/Servlet(Web)、JDBC(資料庫)、RMI/IDL(分布式呼叫)等。
EJB 非獨立技術,**建立在上述基礎設施之上**,由容器提供事務、安全、資源池等系統級服務。
EJB 設計目標(八大支柱)
- 標準組件架構,支援異構工具開發的組件組裝分布式應用。
- 開發者免寫底層事務/狀態/執行緒/資源共享代碼;專家仍可直達底層 API。
- Write Once, Run Anywhere:一次開發,多平台部署免重編譯。
- 涵蓋開發、部署、運行全生命週期。
- 定義工具廠商遵循的約定,確保運行時互操作。
- 相容既有伺服器平台,廠商可擴展產品支援 EJB。
- 相容其他 Java API。
- 與非 Java 應用(CORBA)互操作。
採用 EJB 的效益
- 簡化開發:容器代管系統服務。
- 商務邏輯可移植:標準化 Bean-Container 契約。
- 組件裝配式開發,促進重用。
- 內建企業級服務:分布式物件、事務、資料庫、安全、全域命名。
- 多廠商支援,避免鎖定。
- 組件級擴展支援叢集與負載均衡。
- 保護既有 IT 投資:舊系統以 Entity Bean 包裝訪問。
核心輔助技術深度剖析
JNDI:獲取 Bean 起始引用
統一命名介面,支援 LDAP、NIS、COS Naming、檔案系統、RMI Registry、NDS 等。EJB 容器部署時建立名稱-物件綁定,客戶端 lookup("applications/shopping_cart") 取得 Home 介面。
JTA/JTS/XA:分布式事務標準
ACID 特性(原子性、一致性、隔離性、持久性)。OMG OTS → Sun JTS(Java 映射) → JTA(應用層高階介面) → XA(資源管理器協議)。容器/應用/外部事務管理器均可透過 JTA 管理事務邊界。