Web 服務的力量在於互通性。由於業界在 Web 服務技術方面(SOAP、WSDL、UDDI)的協作,更具體地說,是由於 Web 服務互通性組織(Web Services Interoperability organization,WS-I.org)的工作,Web 服務才可以與其他的 Web 服務進行互動,而不管 Web 服務開發和運行在哪一個平台上(比如是 Microsoft .NET 還是 IBM WebSphere)。Web 服務客戶機分為多種類型,比如另一個 Web 服務、用指令碼語言編寫的客戶機、C# 客戶機、Java 客戶機等等。本文重點講解 Java 客戶機,它可以用於訪問任何遵循 Web 服務規範的 Web 服務(不僅僅是 Java Web 服務)。通過閱讀本文,您將瞭解到需要用來通過不同的尋找和存取方法調用相同的 Web 服務的 Web 服務客戶機代碼。本文所用的樣本是“Hello” Web 服務,它提供了“getGreeting”操作。這種操作接受一個字串參數(例如Jane),然後返回一句問候語“Hello Jane!”。
Web 服務角色
這一部分將描述調用 Web 服務的過程。Web 服務提供者用 Web 服務描述語言(Web Services Description Language,WSDL)文檔來描述 Web 服務。Web 服務一般發布到統一描述、發現和整合(Universal Description, Discovery and Integration,UDDI)註冊中心。Web 服務要求者在 UDDI 註冊中心尋找 Web 服務,綁定到 Web 服務,然後調用它。Web 服務角色顯示在 圖1中。本文將重點講解從服務要求者到服務提供者的水平箭頭(綁定)。本文將把要求者稱為 客戶機,它也可以稱為 消費者。
用於
Java 技術標準的開發隨著 Java 規範提案(Java Specification Request,JSR)提交給Java Community Process(JCP)而出現。兩個 JSR 涵蓋了 Java Web 服務體繫結構:
JSR 101: 用於基於 XML 的 RPC 的 Java API(Java API for XML based RPC,JAX-RPC)
JSR 109: 實現企業 Web 服務(Implementing Enterprise Web services)
兩個規範提供了廠商的實現的一致性和互通性需求。
JAX-RPC —— Java 到 XML 和 XML 到 Java 映射 API
JAX-RPC 為基於 XML 的遠端程序呼叫(Remote Procedure Call,RPC)和 Java API(Java Application Programming Interface,API):
WSDL 到 Java 和 Java 到 WSDL 映射:例如,將 WSDL 連接埠類型映射到 Java 服務端點介面(Java Service Endpoint Interface,SEI)。
XML 資料類型到 Java 資料類型和 Java 資料類型到 XML 資料類型映射,包括簡單類型、複雜類型和數組。
除了 XML 映射之外,JAX-RPC 還定義了伺服器端編程模型和 API,我將在後面的部分中更詳細地介紹它。AX-RPC 1.1 根據 Web 服務互通性組織(Web Services Interoperability organization,WS-I)基本概要版本 1.0(Basic Profile version 1.0)添加了互通性需求。
JSR 109 —— J2EE 環境的 API
JSR 109 指定了 Java 2 Enterprise Edition(J2EE)環境的 Web 服務編程模型和體繫結構。JSR 109 構建在 SOAP 1.1 和 WSDL 1.1 的基礎上,它涵蓋了 J2EE 環境中 JAX-RPC 的使用( 圖 2)。它還定義了 J2EE 應用程式伺服器中的部署模型。JSR 109 的用戶端編程模型(我將在下面的幾個部分中介紹)符合 JAX-RPC。