有愛好開始學習使用 Web 服務的 java 開發人員應當查看 Java Web Services Developers Pack(WSDP)。在本文中,James McCarthy 會帶您迅速瀏覽這個包。您將熟悉到這個包中的工具能為您做些什么,并且找出哪些組件僅僅用于測試而哪些組件可以原樣照搬用到生產中。 隨著最近 Sun Microsystems 的 Java Web Services Developers Pack(Java WSDP)版本 1.0 的發布,Java 開發人員現在可以擁有一個方便的、集所有功能于一身的下載包,用來幫助在 Java 平臺上開發 Web 服務。Java WSDP 包含 Java xml Pack 中的所有用于 XML 的 Java API(Java APIs for XML(JAX)),還包含有 Apache Tomcat 服務器以及為開發與測試 Web 服務提供一個功能完備的環境所需的其他組件。Java XML Pack 中所有技術,一年前也在 Java WSDP 中公布,并且通過了 Java Community PRocess(JCP)的所有設計審查要求。請參閱參考資料部分,查看 Java WSDP 和其他相關技術的鏈接。
Java WSDP 并不是一個產品,而更傾向于是 Web 服務標準的參考實現,它是一個方便的、易于安裝的包。這個包由一些可以投入生產的實現和幾個應該僅僅用于測試目的的組件組成。所以,Java WSDP 不應是一個用來部署生產應用程序的環境,而更傾向于是一個用來開發和測試 Web 服務的環境;它主要用來幫助 Java 開發人員開始學習使用 Web 服務。Java WSDP 是一個優秀的用于理解、開發與測試 Web 服務的工具;并且,由于它是基于開放標準的,因此當您轉到新的生產環境時并不需要重新開始。假如您認為已經為部署 Web 服務做好了預備,請跟隨參考資料部分中的一些鏈接,學習有關一些可以投入生產的高級 Web 服務實現的知識。
與 WebSphere 一起使用 Java Web 服務
假如您想與另一個 Java Servlet 實現(如 IBM WebSphere)一起使用支持 Web 服務的 Java XML 組件,那么您可能僅僅是想單獨使用 Java XML Pack。Java XML Pack 有許多與本文中所描述的組件相同的組件,但它卻并未提供服務器平臺。有了 Java XML Pack,確定在 WebSphere 適當的類路徑中需要安裝哪些包就比較輕易了。想獲取更多有關 WebSphere 的信息,請參閱下面的參考資料部分。
Java WSDP 中有哪些組件? 當安裝 Java WSDP 分發包時,您將創建一個目錄,所有組件都位于這個目錄。缺省情況下,這個目錄包含了一個功能完備的、可以用來開發與測試 Web 服務的服務器環境。Java XML Pack 中包含目前提供的所有用于 XML 的 Java API,并且包含了支持 Web 服務的主要組件。下面是 Java XML Pack 組件的列表以及對這些組件的功能的簡要描述:
用于 XML 處理的 Java API(Java API for XML Processing(JAXP)):JAXP 是一個可插的 API,它對于 W3C 所推薦的 XML API(即 SAX、DOM 和 XSLT)的任意供給商實現都是開放的。JAXP 為獲得 XML 解析器提供了標準接口;最新發布的 Java 平臺(Java 2 平臺,標準版 SDK v1.4(Java 2 Platform, Standard Edition SDK v1.4),請參閱參考資料以獲取更多的信息)將 JAXP 作為一個標準接口包括在內。同其他 Java 接口一樣,正在開發的 JAXP 參考實現已被指派給其他團體 — 在這個例子中,是 Apache Software Foundation。Xerces 2 是 Apache 最新的 XML 解析器,它包括在 Java 2 平臺,標準版 SDK v1.4 中。 用于 XML 消息傳遞的 Java API(Java API for XML Messaging(JAXM)):JAXM 旨在使用純 Java API 使應用程序能夠發送與接收面向文檔的 XML 消息。JAXM 的目的是為更高級別的、基于標準的并且基于 SOAP 消息傳遞協議的消息傳遞協議(如 ebXML)提供一個基礎。SAAJ 規范最近從 JAXM 被分離了出來,它包含一個同步的 SOAP 連接,因此 JAXM 現在主要用于異步消息。(我將在下面對 SAAJ 作更加詳盡的討論)。當以異步方式使用 JAXM 時,它使用消息傳遞提供程序來促進消息的路由選擇。JAXM 包括一個消息傳遞提供程序,這個提供程序是 ebXML 傳輸、路由和打包(ebXML Transport, Routing, and Packaging)規范版本 1.0 的參考實現。 用于 Java 的帶有附件的 SOAP API(SOAP with Attachments API for Java(SAAJ)):SAAJ 是一個包,它使開發人員能夠生產并消費那些遵循 SOAP 1.1 規范的消息及其所包含的 SOAP 附件。SAAJ 原先是作為 JAXM 1.0 規范的一部分進行定義的;但隨著最近 JAXM 1.1 的發布,SAAJ 已被分離出來,自成一個規范,這樣其他規范就能夠依靠 SAAJ 包而無需依靠 JAXM。 用于基于 XML 的 RPC 的 Java API(Java API for XML-based RPC(JAX-RPC)):JAX-RPC 是用于支持 SOAP 1.1 基于 XML 的 RPC 調用的實現包。核心 JAX-RPC 包包含一個用于調用 Web 服務的功能完備的 JAX-RPC 客戶機以及 JAX-RPC 服務器的一個參考實現。除了核心包以外,Java WSDP 分發包還包含有許多命令行工具,這些命令行工具用于從 Web 服務定義語言(Web Services Definition Language(WSDL))文件構建客戶機存根,也用于部署服務器組件。 用于 XML 注冊的 Java API(Java API for XML Registries(JAXR)):XML 注冊中心通常用來存儲有關已發布的 Web 服務的信息,而 JAXR API 則提供了訪問這種信息的統一的方法?,F在,Web 服務最常用的 XML 注冊中心是統一描述、發現和集成(Universal Description, Discovery, and Integration(UDDI))注冊中心;JAXR 包含一個用于訪問 UDDI 的提供程序。 除了 Java XML Pack 中的包之外,Java WSDP 還包含有一些其他組件,這些組件使其成為用于測試 Web 服務的功能完備的服務器環境。以下便是這些額外組件的清單,這些組件使得 Java WSDP 更加完善:
紫色的組件是 Java API for XML(JAX)包的一部分,在 Java XML Pack 中也可以找到它們。大多數 JAX 包都包含可部署的參考實現。 在我看來,青綠色的組件在生產環境中是不可部署的。這些組件的大多數是在生產中將被商業或開放源代碼解決方案所替代的服務器端實現。 黃色用來表示那些由 Apache Software Foundation 維護的組件。在我看來,由于它們在開放源代碼社區中被廣泛使用,所以您可以在生產環境中安全地部署它們。請注重,在本圖中沒有顯示 Xerces 和 Xalan,但它們是與 Java WSDP 一起被分發的。 白色用來表示所生成的代碼、由開發人員在部署過程中提供的數據或瘦客戶機應用程序(例如,Web 瀏覽器)。 圖 1. 各組件間的關系
客戶機端組件 這個包的客戶機端組件通常被部署到客戶機應用程序中或者安裝在正在作為客戶機層進行交互的遠程服務器上。基于服務器的客戶機層通常在 JavaServer Page 中被用來與遠程 Web 服務交互。圖 1 中所示的 Web 瀏覽器客戶機便說明了這樣一個體系結構。在這個圖中,基于 JSP 的 Web 應用程序可以使用 JAX-RPC 客戶機存根來與運行在另一個平臺(如 Microsoft .Net)上的遠程 Web 服務會話。