Sun 提供的 J2EE Client Access Services (CAS) COM Bridge 讓 COM 客戶端(含 Delphi)透明存取 J2EE 伺服器上的 EJB。運作機制:
核心層: JvmStartup、JavaVirtualMachine(單例)、JavaProxy(每個 Java 物件一一對應)。
簡化服務模組: Java 服務(類載入/建立/靜態方法)、企業級服務(統一 JNDI 查找 Home 介面)、腳本服務(支援 ASP 等 IDispatch 環境)、JVM 控制項(動態修改參數)。
工具集: 設定工具、JVM 設定編輯器、GenTypeLib(產生類型庫)、RegTypeLib(部署註冊)。
測試環境: Win2000 Server + j2sdk1.4.0_03 + J2EE CAS COM Bridge 1.0 + Delphi 7 + JBuilder 8 + WebLogic Server 7。EJB 部署於 WebLogic,客戶端需安裝 JVM 與 COM Bridge。
EJB 範例: ServiceFacade(JNDI 名),Home/Remote 介面同名,方法 test(): String 回傳 "Test successfully!"。
客戶端代碼:
var WS, JHome, Obj: Variant;
begin
// 1. 初始化 WebLogic 企業級服務模組
WS := CreateOleObject('J2EECAS.WebLogicServices');
WS.ProviderURL := 't3://127.0.0.1:7001'; // JNDI 初始 URL
// 2. 查找 Home 介面並建立 EJB 物件
JHome := WS.LookUpEJB('ServiceFacade', 'ServiceFacadeHome'); // 參數:JNDI名, Home介面名
Obj := JHome.Create; // 建立 EJB 遠端介面代理
// 3. 呼叫業務方法
ShowMessage(Obj.Test); // 顯示 "Test successfully!"
end;
關鍵設定: 將 weblogic.jar 與 EJB 用戶端 stub (client.jar) 加入系統 CLASSPATH;註冊 WebLogic 服務模組:regsvr32 %J2EE_CAS_BRIDGE%\doc\appserver-connectivity-samples\bin\weblogic-services.dll。
| 方案 | 優點 | 缺點 |
|---|---|---|
| CORBA | 跨語言/平台標準 | 增加開發成本、中間層降低效能、需產生 IDL、維護複雜 |
| Web Services | 基於 XML 易於異構整合 | 無法充分利用 EJB 容器安全策略、複雜類型需額外 Wrapper 轉 XML |
| COM Bridge | 原生 Windows GUI 整合、效能較佳、開發效率高 | Windows 平台綁定、需部署 JVM+Bridge |
優化策略:
COM Bridge 讓 Delphi 等 Windows 原生工具高效整合 J2EE 後端,結合雙方優勢:前端豐富 GUI 體驗、後端健壯分散式事務處理。適用於漸進式遷移、異構系統整合場景。