本系列最終篇,聚焦於雙介面 EJB 應用在不同部署拓撲下的實際配置、部署步驟與效能基準測試。透過 WebSphere Application Server (WAS) 與 Tomcat 雙容器環境,驗證本地/遠端介面在 All-in-One、Separate Containers 架構下的表現,為架構決策提供量化依據。
TestServerTomcatServerTomcat,類型:Apache Tomcat 4.1 Test EnvironmentTOMCAT_HOME 與 JDK 路徑。
圖 7:Tomcat 伺服器設定
TestServerWASServerWAS,接受預設值 (參考「Hello World J2EE 應用」文章)。
圖 8:包含所有專案的工作台
DualEARForAllInOne 加入 WAS 配置,設定類路徑、JVM 參數 (-Xms512M -Xmx512M)、禁用通用測試客戶端。dualDB,設為預設 CMP 連線工廠 (jdbc/ds1),授權類型 Per_Connection_Factory。DualEJBModule01:CMP 連線工廠 JNDI = jdbc/ds1。DualEJBModule02 的 web.xml、ejb-jar.xml 中 useLocal=true。ServerWAS,瀏覽器訪問 https://localhost:9080/DualWebModule03 驗證。
圖 9:索引與結果頁面
無需變更專案設定,僅將 DualEJBModule02 的部署描述符中 useLocal 改為 false 即可切換至遠端介面通訊。
ServerWAS 移除 DualEARForAllInOne,加入 DualEARForEJBContainer (僅含 EJB 模組)。DualWebModule03 加入 ServerTomcat 配置。web.xml 中 EJB 定位 URL 參數註解,指定 WAS IIOP 位址。ejb-jar.xml 設 useLocal=true (WAS 容器內 EJB 間通訊仍用本地介面最快)。${WAS_50_PLUGINDIR}/properties、DualEJBModule02/ejbModule、DualJavaModule00。j2ee-modified.jar (僅含 EJB 相關類,避免 javax.servlet 衝突)。-Xms256M -Xmx256M。ServerWAS,再 ServerTomcat。訪問 https://localhost:8080/DualWebModule03 (Tomcat 預設 8080 埠)。使用簡易 Java HTTP 測試客戶端 (含 GUI),支援多執行緒並發,測量平均回應時間與成功採樣數 (吞吐量)。
id (隨機)、firstName/lastName (預定義陣列)。
圖 10:簡易 Java HTTP 測試客戶端
server.xml maxProcessors=200 minProcessors=200。每組運行 10 分鐘,首輪預熱捨棄,每輪清空 PERSON 表。

圖 11:單執行緒客戶端平均回應時間

圖 12:多執行緒客戶端平均回應時間

圖 13:單執行緒客戶端吞吐量

圖 14:多執行緒客戶端吞吐量
All-Local 延遲最低、吞吐最高,符合預期 (避免序列化/網路開銷)。All-Remote 比 All-Local 慢約 30-50%,主要來自 RMI/IIOP 編碼解碼與埠通訊。Separate Containers 架構因跨進程 (Tomcat→WAS) 遠端呼叫,性能接近 All-Remote,但 Web 容器分離帶來安全/擴縮彈性收益。作者:Sheldon Wosnick,IBM 多倫多實驗室 WebSphere Studio Application Developer Server Tools 組顧問軟體工程師。