為什麼需要伺服端元件架構?
企業級分散式應用面臨高併發、安全、交易、資源管理等複雜挑戰。傳統兩層架構(Fat Client)存在部署成本高、資料庫驅動管理難、網路效能差、業務邏輯移植困難等痛點。N 層架構將表現層、業務邏輯層、資料層分離,配合中介軟體提供交易管理、安全、資源池化等服務,顯著降低系統複雜度。
Java 元件模型演進:JavaBean → Servlet → EJB
- JavaBean:視覺化、細粒度元件,無容器管理,適合客戶端/IDE 設計時組裝。
- Applet/Servlet:Web 端元件,分別由瀏覽器與 Web 伺服器容器管理。
- Enterprise JavaBean (EJB):伺服端業務元件,部署於應用伺服器容器,享有交易、安全、持久化、生命週期管理、遠端存取等企業級服務。EJB 是 J2EE 平台核心。
EJB 六大角色分工(關鍵分離關注點)
| 角色 | 職責 | 專業領域 |
| Enterprise Bean Provider | 開發業務邏輯 Bean、定義介面、提供部署描述符 | 應用領域專家 |
| Application Assembler | 組裝多個 Bean 為完整應用、編寫 JSP/Servlet 表現層 | 系統架構師 |
| Deployer | 將 ejb-jar 部署至特定伺服器、配置資源(JDBC、JMS)、調整部署參數 | 運維/伺服器專家 |
| EJB Server Provider | 提供底層分散式交易、物件管理、OS/網路/資料庫存取 | 系統級中介軟體廠商 |
| EJB Container Provider | 提供 Bean 執行環境、交易/安全/生命週期管理、部署工具、監控工具 | 應用伺服器廠商(通常與 Server 同廠商) |
| System Administrator | 維護伺服器/容器運行環境、網路、硬體資源 | IT 基礎設施專家 |
EJB 實體架構:Container 與 Server
- EJB Container:Bean 運行空間,實作 Bean 與容器契約,提供部署工具、管理 Bean 生命週期、攔截方法呼叫套用交易/安全。
- EJB Server:處理分散式物件通訊、分散式交易協調、資源管理器連接、執行緒管理等重擔。Container 建構於 Server 之上。
EJB 兩大核心 Bean 類型
Session Bean(會話 Bean)
- Stateful:一對一維護會話狀態,生命週期較短,客戶端斷線即銷毀,非持久。
- Stateless:無會話狀態,實例池共享,高擴展性,適合業務邏輯處理。
Entity Bean(實體 Bean)
- 對應資料庫資料(如表格一列),多客戶共享存取。
- 透過交易上下文保證資料完整性。
- 生命週期長,隨資料存在而存在,容器崩潰不影響持久狀態。
- 持久化管理:CMP(容器管理)或 BMP(Bean 管理)。
- 主鍵唯一識別,客戶透過主鍵定位特定實體。
J2EE 技術棧整合
EJB 搭配 RMI-IIOP(遠端呼叫)、JNDI(命名服務)、JDBC(資料存取)構成 J2EE 中介軟體服務套件。BEA WebLogic 為首個商用 EJB 應用伺服器。