在 Java EE 5 平臺中,通過使用標注顯著改進和簡化了 Web 服務支持。以下規范已應用于此領域中:JSR 224,Java API for XML-Based Web Services (JAX-WS) 2.0;JSR 222,Java Architecture for XML Binding (JAXB) 2.0 以及 JSR 181,Web Services Metadata for the Java Platform。
JAX-WS 2.0
JAX-WS 2.0 是 Java EE 5 平臺中用于 Web 服務的新 API。作為 JAX-RPC 1.1 的后繼者,JAX-WS 2.0 保留了自然的 RPC 編程模型,同時在以下幾個方面進行了改進:數據綁定、協議和傳輸的獨立性、對 Web 服務的 REST
樣式的支持以及易開發性。
與 JAX-RPC 1.1 的主要區別在于,現在所有數據綁定都委托給了 JAXB 2.0。這樣,基于 JAX-WS 的 Web 服務就可以使用百分之百的 XML 架構,從而提高了互操作性和易使用性。這兩種技術已很好地集成在一起了,因此用戶不必再為使用兩套不同的工具而勉為其難了。從 Java 技術類開始開發時,JAXB 2.0 可以生成自動嵌入到 Web 服務描述語言 (Web Service Description Language, WSDL) 文檔內的 XML 架構文檔,從而用戶無需手動執行這一容易出錯的集成。
現成的 JAX-WS 2.0 本身可以支持 SOAP 1.1、SOAP 1.2 和 XML/HTTP 協議。協議可擴展性從一開始就是人們所希望實現的目標,JAX-WS 2.0 允許供應商支持其他協議和編碼來獲取更佳的性能(例如 FAST Infoset)或專用的應用程序。Web 服務(使用附件來優化大型二進制數據的發送和接收)可以利用 W3C 制訂的 MTOM/XOP(“消息傳輸優化機制/XML 二進制優化打包”的簡稱)標準,且對編程模型沒有任何不利的影響(有關 MTOM/XOP 的信息,請參見此頁)。在 Java EE 5 技術出現之前,定義 Web 服務需要使用很長且復雜的描述符。現在,定義它卻非常簡單,只需將 @WebService
標注放置在 Java 技術類上即可。類上的所有公共方法會自動發布為 Web 服務操作,并且其所有參數都將使用 JAXB 2.0 映射到 XML 架構數據類型。
異步 Web 服務
由于 Web 服務調用是通過網絡來實現的,因此這種調用所花費的時間是無法預測的。許多客戶端(特別是交互式客戶端,如基于 JFC/Swing 的桌面應用程序)由于必須等待服務器的響應而嚴重地影響了它們的性能。為了避免出現性能降低,JAX-WS 2.0 提供了新的異步客戶端 API。使用此 API,應用程序編程人員不再需要自己創建線程,而是依賴于 JAX-WS 運行時為他們管理長時間運行的遠程調用。
異步方法可以與 WSDL 生成的任何接口以及動態性更強的 Dispatch
API 聯合使用。為了方便起見,在導入 WSDL 文檔時,您可以要求為 Web 服務定義的任何操作生成異步方法。
以下提供了兩種使用模型:
- 在輪詢模型中,發出調用。準備就緒后,請求結果。
- 在回調模型中,注冊處理程序。在響應到達后,立即向您發出通知。
請注意,異步調用支持是完全在客戶端上實現的,因此不需要對目標 Web 服務進行任何更改。
IDE 提供了處理 JAX-WS 的工具。您可以使用“新建文件”向導中的模板生成 JAX-WS 工件。異步 Web 服務可以通過 Web 服務定制編輯器來創建。代碼完成功能包括可以在 Web 服務中使用的標注。