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