一、應用角色與部署操作角色詳細職掌
Enterprise Bean Provider
領域專家,提供業務任務、方法、Remote/Home 介面、部署描述符。專注應用邏輯,不關心分散/事務/安全系統級面向。
Application Assembler
組裝客製 Bean 與其他組件 (GUI Client、Applet、Servlet) 成完整應用。僅關心 Bean 介面,不關心實作。
Deployer (部署者)
為特定 Bean 配置操作環境:組合多 Bean、修改屬性 (部署描述符設定事務/安全策略)、整合既有 Enterprise 管理軟體。
System Administrator (系統管理員)
管理底層計算/網路服務 (含 EJB 服務/容器)。監控伺服器狀態、異常處理。用 Enterprise 管理工具透過容器 Hook 互動。
傳統開發者現兼任 Bean Provider/Assembler,專注應用問題。部署者定義策略,機制複雜性交給專門代理。
二、EJB 設計模式與命名慣例 (續)
- 無狀態服務:提供功能不保持狀態,Client 不提供上次操作資訊 → Stateless Session Bean
- 基於會話:產生中間層 Session 物件作 Client 代理,生命週期由 Client/服務程式決定 → Stateful Session Bean
- 持久物件:綁定資料庫資料塊,多 Client 共享,生命期由資料存儲決定 → Entity Bean
規格中每種模式定義介面與命名慣例。
三、EJB 基礎建設
容器/服務提供者實現,處理分散式面向、事務管理、安全性。規格定義基礎建設與 Java API 要求,不指定技術/平台/協定實現細節。
- 提供 Client-Bean 通訊通道 (安全性重要,特別是跨 Internet 存取)。
- 加強 Bean 存取控制。
- 保證 Bean 資料持久性。
- 提供與企業級既存系統整合能力。
- 所有通訊屬分散式事務一部分,由基礎建設管理。
- 提供分散式應用管理工具 Hook 以利成功部署。
四、Container 核心概念
CORBA/RMI 解放開發者於網路傳輸 (物件定位、資料重組)。Container 更進一步:簡化安全性、事務協調、資料持久等分散式應用複雜面向。
Bean 打包成標準 ejb-jar 檔 (含一或多 Bean)。每 Bean 包含:介面、類別、部署描述符。
Bean Provider 提供之 ejb-jar 內容
- Remote 介面:Client 可調用函數。
- Home 介面:Client 產生/定位 Bean 實例。
- Enterprise 類別:實現 Bean 語意。
- Deploy Descriptor:部署者利用提供代碼未宣告資訊 (策略/屬性)。EJB 1.0 用 SessionDescriptor/EntityDescriptor 類別,1.1 建議用 XML 定義。
部署 Bean 含義
- 保證不同 Bean 能協同工作。
- 命名服務註冊 Bean。
- 透過 EJB 通訊系統提供存取入口。
- 執行事務管理與安全策略。
容器可含任意多 Bean、jar 檔。每 Bean 有部署描述符、Home/Remote 介面、實作代碼。容器亦提供部署工具。
五、為何選擇 Inprise EJB 容器?
完整服務支援
- 完全支援 EJB 1.1 規格。
- 有效運行/管理 EJB 容器。
- 內建命名服務、事務服務、內嵌 Java RDBMS。編程/部署簡單。
- 豐富範例示範 EJB/容器用法。
對 Bean 開發者的高階產品價值
完整、靈活的運行時環境
- 100% 純 Java 服務,可單獨配置或完整分散式配置。彈性依需求調整應用。
- 每個工具產生的 Bean 同時是 EJB 物件與 CORBA 物件。
- 不限制 Bean/容器/機器數量對應關係。支援分散式事務協議、獨立裁決、部分配置最佳化效能。
建於 VisiBroker + RMI-IIOP 之上
- VisiBroker 為經證明的 ORB 領導者 (大廠聯測/實際環境)。大量運行時優化、多路連線/連線池/執行緒池管理。
- Client-Bean、Bean-Bean、Bean-CORBA 物件通訊皆用 VisiBroker IIOP。完整相容 CORBA 2.3、RMI-IIOP 以值傳遞實現 (複雜 Java 資料類型映射為 IDL 值類型)。
- 與所有支援 RMI-over-IIOP 產品互通。
- 安全特性由 VisiBroker 提供 (憑證從 Client 傳至服務)。
- 事務上下文由 VisiBroker 傳播 (CORBA Client 發起事務存取 EJB 時)。
- 兩階段提交由 Inprise ITS 管理。JDBC 支援 2PC 時 EJB 支援 2PC。
EJB 容器即 CORBA 物件
- Java2IIOP 編譯器與容器皆相容 CORBA。容器理解 RMI 呼叫,用 IDL 存介面定義。產生 Stub/Skeleton/IDL 供其他語言 (C++、Delphi) 使用。
- 對 CORBA Client,EJB 容器即 CORBA 服務,容器工具即 CORBA 工具。
- 建於 JNDI/CosNaming、JTS/OTS 基礎,完全支援 CORBA。JNDI 容器可跑於其他 JNDI 實作 (如 LDAP) 上。
對多種 Bean 的支援
- 有狀態/無狀態 Session Bean。
- Entity Bean (CMP/BMP)。
- 容器可含多 jar,每 jar 多 Bean,各有部署描述符、Home/Remote 介面、實作碼。
獨特的 Client 支援能力
- VisiBroker 連線管理:單一服務支援超過 TCP 連線數的 Client 連線 (LRU 關閉)。
- 容器本身無狀態:不為每個新 Session Bean 會話配置記憶體,支援任意多無狀態 Session Bean。
部署支援
- 代碼生成編譯器、部署前驗證工具。
- 支援 EJB 1.1 JNDI 命名、基於 XML 部署描述符。
事務管理器
- 分散式兩階段提交支援。遵循 Sun JTS、OMG OTS 最新規格。開發少用 JTS,部署用健壯 ITS。
JDBC 連線池與事務整合
- 所有 JDBC 存取透過 DataSource 實現,整合資料庫連線池、JTS 全域事務、JDBC 本地事務。
命名服務
- 分散式命名管理。遵循 JNDI、OMG CosNaming。部署時可選 JNDI 或更健壯 INS。
安全性支援
- 建於 CORBA 之上的 Inprise 安全服務 (附加式)。保證憑證從 Client 傳至服務。
Java 資料庫
- 全關聯高效能資料庫儲存 Bean 狀態。可同進程或獨立進程 (效能) 運行。即插即用:終端用戶可替換後端儲存 (如用其他資料庫儲存 Session 狀態/Entity Data)。
容器管理 Entity Bean 持久性 (CMP)
- CMP 引擎提供透明物件關係映射 (O/R Mapping) 與純 JDBC 持久框架。開放 API 允許第三方工具整合。
與其他組件整合
- Client 連接 Bean (Java EJB 介面或 IDL CORBA 介面)。每 Bean 同時是 EJB 物件與 CORBA 物件。CORBA Client 可用 C++/Java/Delphi 實現。
- Bean 資料庫存取 (Entity Bean,BMP/CMP)。
- 後端服務:CORBA 服務 (C++/Java/Delphi、任何相容 ORB)、EJB 服務 (Inprise/其他 IIOP 廠商)、其他原生服務 (ERP、Mainframe 等)。