Web Services 已成為實現服務導向架構(SOA)的主流技術,而 J2EE 1.4 確立了在 Java 平台上建置與部署 Web Services 的標準規範。本文將深入探討如何在支援 J2EE 1.4 的應用伺服器(如 Oracle Application Server 10g)上,建構輕量、可互操作的分散式服務。
Web Services 是可透過網路發布、發現與呼叫的獨立、自我描述組件。其核心優勢在於平台獨立性:無論服務以 Java/J2EE 開發並部署於 OC4J,客戶端仍可使用 .NET 等異構技術呼叫。架構圖如下:

圖 1. Web Services 運作流程
早期以 RPC 風格為主,模擬遠端程序呼叫,雙方需遵循嚴格訊息規範;近年 Document 風格成為主流,模擬 XML 文件交換,結構由雙方共同定義,不需即時回應,更適合商務文件交換場景。
WSDL(Web Services Description Language)是 Web Service 的核心,完整描述服務的連接埠、操作與訊息類型,並作為服務與客戶端的契約,支援自動產生客戶端 Proxy 代碼。以下為 Hello World 服務的 WSDL 範例片段:
<definitions name="HelloService" ...> ... </definitions>
SOAP 提供呼叫協定,UDDI 提供服務註冊與發現機制,兩者均已整合至 J2EE 平台。
J2EE 1.4 提供完整 API 體系,核心為 JAX-RPC(JSR 101),封裝 XML/Java 類型映射與 SOAP 訊息處理細節,支援伺服器端(Java 類別或 Stateless EJB)與客戶端兩種程式模型,並確保與 .NET 等異構平台互操作。

J2EE 1.4 統一了標準部署模型。以 EJB 為基礎的服務打包於 ejb-jar,以 Java 類別為基礎的打包於 WAR,皆需包含 webservices.xml、oracle-webservices.xml、WSDL、Mapping 檔等描述符。開發工具(如 Oracle JDeveloper)與伺服器組裝工具可自動產生這些檔案。
Java 類別開發輕量,無 EJB 額外負擔;EJB 提供宣告式交易與安全,讓開發者專注商務邏輯。EJB 3.0 進一步簡化模型,外觀接近一般 Java 類別。
將既有 Java 類別或 EJB 發布為 Web Service,重用商務邏輯,工具自動產生 WSDL 等描述檔。
先以 WSDL 定義服務契約,再生成介面與骨架代碼,利於設計可維護、可互操作的服務。
客戶端可採用靜態 Stub、動態 Proxy 或 DII。J2EE 1.4 簡化流程:在部署描述符定義 service-ref,廠商描述符指定端點位址,再透過 JNDI 查找呼叫。
J2EE 5.0 引入 Web Services Metadata Annotations(JSR 181)與 EJB 3.0,採用慣例優於配置,大幅減少描述檔編寫。範例:
@WebService public class HelloWorldService { @WebMethod public String sayhello(String name) { return "Hello " + name; } }
結合 EJB 3.0,服務開發將更為輕鬆。
掌握 J2EE 平台建構 Web Services 基礎後,即可在 Oracle AS 10g、Sun Java System AS 等相容伺服器上開始開發與部署。