本主題介紹如何使用 Web 服務。WebSphere® Application Server 支援根據各種 Java™ 程式設計模型開發和實作的 Web 服務。Web 服務適用於跨多個平台操作,包括 Java Platform Enterprise Edition
(Java EE) 和非 Java EE 平台。
開始之前
決定 Web 服務實作是否有利於您的商業程序。
關於這項作業
最佳作法: IBM® WebSphere Application Server 支援 Java API for XML 型 Web 服務 (JAX-WS) 程式設計模型和 Java API for XML 型 RPC (JAX-RPC) 程式設計模型。JAX-WS 是延伸 JAX-RPC 程式設計模型所提供之基礎的下一代 Web 服務程式設計模型。
當使用策略性 JAX-WS 程式設計模型時,透過支援標準型註釋模型,簡化了 Web 服務和用戶端的開發工作。
雖然仍支援 JAX-RPC 程式設計模型和應用程式,但請利用易於實作的 JAX-WS 程式設計模型來開發新的 Web 服務應用程式和用戶端。
如需支援的標準和規格的完整清單,請參閱 Web 服務規格與 API 說明文件。
實作 Web 服務應用程式可輕鬆整合商業基礎架構內外以單機系統形式運作的應用程式系統。
例如,您的客戶資訊資料庫是獨立式應用程式,但您希望會計應用程式能夠存取客戶資訊。
您可以為客戶資料庫建立 Web 服務,然後將會計應用程式當成 Web 服務用戶端。
這樣,會計應用程式就可以存取客戶資訊。藉由實作 Web 服務,這兩個應用程式會很有效率地共用資訊。
因為 Web 服務可以輕鬆套用至現有的應用程式和資訊技術資產,您可以開發、部署及重新撰寫新的解決方案,迅速掌握新的商機。
隨著 Web 服務日益普及,更多服務出現,促進網際網路上開發出更健全的即時應用程式和商業整合模型。
您可以使用以下提供的步驟,將 Web 服務應用程式搭配應用程式伺服器一起使用:
程序
- 規劃使用 Web 服務。 檢閱 Web 服務的所有元件,學習如何制訂更健全的 Web 服務計劃。
- (選用)移轉現有的 Web 服務。
因為 Java EE 環境強調相容性,大部分支援 JAX-WS 和 JAXB 新版規格的應用程式伺服器會繼續支援舊版的 JAX-RPC 規格。
於是,現有的 Web 服務很可能仍然基於 JAX-RPC,但使用 JAX-WS 和 JAXB 來開發新的 Web 服務。
然而,隨著時間經過,應用程式經過修訂和改寫,有時將基於 JAX-RPC 的 Web 服務移轉到基於 JAX-WS 和 JAXB 的 Web 服務,可能才是最佳策略。
這可能是因為供應商選擇加強服務品質,但僅限於新的程式設計模型中。例如,SOAP 1.2 和「SOAP 訊息傳輸最佳化機制 (MTOM)」支援只適用於 JAX-WS 2.x 和 JAXB 2.x 程式設計模型,並不適用於 JAX-RPC。請參閱「Web 服務移轉最佳作法」,以進一步瞭解將 JAX-RPC Web 服務移轉到 JAX-WS 和 JAXB Web 服務時的最佳作法和範例。
註: 必須使用 JAX-WS 程式設計模型改寫現有想要使用 JAX-WS 特性的 JAX-RPC 應用程式。
如果您原本使用基於 Apache SOAP 的 Web 服務,而現在想要開發和實作 Web Services for Java EE 規格,則需要移轉以所有 4.0 版和 5.0.2 之前的 5.0 版所開發的用戶端應用程式。
如需進一步瞭解,請參閱「將 Apache SOAP Web 服務移轉到基於 Java EE 標準的 JAX-RPC Web 服務」資訊。
- 開發 Web 服務應用程式。 您可以使用下列其中一種方法開發 Web 服務:
- 使用 JAX-WS 根據現有的 WSDL 檔開發 Web 服務。
您可以從現有的「Web 服務說明語言 (WSDL)」檔開始來建立 JAX-WS Web 服務,此檔案說明 JavaBeans 或 Enterprise Bean 應用程式的服務介面。
此 WSDL 檔通常於應用程式建模過程中定義。使用現有的服務定義或 WSDL 檔產生新的應用程式,就稱為由上而下的 Web 服務開發方法。
- 使用 JAX-WS 開發 Web 服務應用程式。
您可以使用 Java API for XML-Based Web Services (JAX-WS) 程式設計模型來開發 Web 服務。JAX-WS 透過標準的註釋型模型來開發 Web 服務應用程式和用戶端,簡化應用程式開發流程。
XML 和 Java 物件有一組常用的連結規則,讓您輕鬆地將 XML 資料和處理函數納入 Java 應用程式中。還有一組加強功能可協助您以最佳方式隨著 Web 服務要求一起傳送二進位附件,例如影像或檔案。
9.0 版支援將單態階段作業 Enterprise Bean 當作 JAX-WS 端點。如果 Web 服務端點實作 Bean 的單一實例需要負責處理特定 Web 服務端點接收的所有要求,在這種狀況下,單態階段作業 Bean 就很有用。
此單一 Bean 實例可能需要跨要求來共用狀態資訊。通常會建立 Web 服務端點實作 Bean 的新實例來處理每一個要求。
從現有的 JavaBeans 或從無狀態或單態階段作業 Enterprise Bean 開始來開發 JAX-WS Web 服務時,您可以使用註釋將 Bean 公開為 JAX-WS Web 服務。
在 Bean 中新增 @WebService 或 @WebServiceProvider 註釋就能將 Bean 定義為 JAX-WS Web 服務。
公開為 JAX-WS Web 服務的 Enterprise Bean 必須包裝成 EJB 3.0 或更高版本的模組。
將現有的應用程式轉換成 Web 服務,就稱為由下而上的 Web 服務開發方法。
此過程之所以稱為由下而上是因為從實作開始,而不是從現有的服務或「Web 服務說明語言 (WSDL)」檔開始。
- 開發和部署 JAX-WS Web 服務用戶端。 根據 Web Services for Java Platform Enterprise Edition (Java EE) 規格開發的 Web 服務用戶端,能夠存取又呼叫 JAX-WS Web 服務。
應用程式伺服器支援基於 JAX-WS 程式設計模型的 Enterprise JavaBeans™ (EJB) 用戶端、Java EE 應用程式用戶端、JavaServer Pages (JSP) 檔及 Servlet。
- 使用 JAX-RPC 根據現有的 WSDL 檔開發 Web 服務應用程式。
您可以從現有的 WSDL 檔開始來建立 JAX-RPC Web 服務,此檔案採用由上而下的 Web 服務開發方法說明 Enterprise Bean 實作的服務介面。
- 使用 JAX-RPC 開發 Web 服務應用程式。
您可以使用 Java API for XML-based RPC (JAX-RPC) 程式設計模型來開發 Web 服務。從現有的 JavaBeans 或 Enterprise Bean 開始來開發 JAX-RPC Web 服務時,您需要開發 WSDL 檔。
您可以使用現有的 JavaBeans 或 Enterprise Bean,然後啟用 Web 服務的實作。
- 開發和部署 JAX-RPC Web 服務用戶端 您可以根據 Web Services for Java Platform Enterprise Edition (Java EE) 規格及 Java API for XML-based Remote Procedure Call (JAX-RPC) 規格來開發 Web 服務用戶端。
應用程式伺服器支援基於 JAX-RPC 程式設計模型的 Enterprise JavaBeans™ (EJB) 用戶端、Java EE 應用程式用戶端、JavaServer Pages (JSP) 檔及 Servlet。
- 透過服務整合技術啟用 Web 服務
您可以使用服務整合匯流排的 Web 服務啟用來達到下列目標:
- 將匯流排目的地可用的內部託管服務當成 Web 服務使用。
- 使外部 Web 服務可供匯流排目的地在內部使用。
- 使用 Web 服務閘道將現有的服務(內部託管的服務或外部 Web 服務)對映到閘道提供的新 Web 服務。
您可以開發 Web 服務來利用「Web 服務定址 (WS-Addressing)」、「Web 服務資源架構 (WSRF)」和「Web 服務交易 (WS-Transaction)」支援。
- 使用 WS-Addressing SPI:執行更進階的 Web 服務定址作業。
您可以開發 Web 服務來利用「Web 服務定址 (WS-Addressing)」,這項支援採用標準方法來定址 Web 服務,並於訊息中提供定址資訊,有助於發揮 Web 服務之間的交互作業能力。
- 使用 Web 服務資源架構建立有狀態的 Web 服務。
透過應用程式伺服器中的「Web 服務資源架構 (WSRF)」支援,您可以將有狀態 Web 服務實作成 WS-Resource,並使用 WS-Addressing 端點參照來參照該服務。
- 使用 WS-Transaction 原則來協調 Web 服務的交易或商業活動。
WS-Transaction 是一項包括 WS-AtomicTransaction、WS-BusinessActivity 和 WS-Coordination 規格的交互作業能力標準。應用程式伺服器中的「Web 服務基本交易 (WS-AT)」支援提供了 Web 服務環境的交易服務品質。分散式 Web 服務應用程式和其使用的資源,可以參與分散式廣域交易。
利用應用程式伺服器中的「Web 服務商業活動 (WS-BA)」支援,不同系統上的 Web 服務可以協調比基本交易更加鬆散聯結的活動。這類活動在基本結構上可能很難或無法回復,因此如果發生錯誤,則需要補償程序。
- 使用 WS-Policy 以標準格式交換原則。
WS-Policy 是一項交互作業標準,用來說明和溝通 Web 服務的原則,以便服務提供者能以標準格式匯出原則需求。
用戶端可以將服務提供者需求與其本身的功能結合起來,以建立特定互動所需的原則。
- 組合 Web 服務。
請參閱組合 Web 服務所需的條件及組件(例如企業保存檔 (EAR))的組合順序的相關資訊。
- 部署 Web 服務。
請參閱部署 Web 服務已配置和啟用的 EAR 檔所需的步驟。
- 管理已部署的 Web 服務。
部署 Web 服務應用程式之後,您可以配置安全設定、檢視部署描述子和 WSDL 文件、設定 Web 服務埠的範圍,以及管理原則集和服務提供者。
您可以使用管理主控台或指令行工具來執行這些作業。
- 保護 Web 服務。
- 發佈 WSDL 檔。
安裝 Web 服務應用程式及選擇性地修改端點資訊之後,您可能需要「Web 服務說明語言 (WSDL)」檔,這些檔案包含已更新的端點資訊。
請參閱有關發佈 WSDL 檔以提供此資訊所需的步驟。
- 監視 Web 服務應用程式的效能。
請參閱使用「效能監視基礎架構 (PMI)」測量 Web 服務要求所需處理時間的相關資訊。
- Web 服務疑難排解。
請參閱如何對用於開發、實作和使用 Web 服務的各種程序進行疑難排解的相關資訊,包括指令行工具、Java 編譯錯誤、用戶端執行時期錯誤和異常狀況、序列化和解除序列化錯誤,以及「Web 服務安全」相關的鑑別盤查和授權失效。
範例
下列範例說明企業可能會如何使用 Web 服務。
花店老闆想要開始透過 Web 接受客戶的訂單。這位老闆首先尋找花卉批發商、訂定產品價格,並設計未來花卉訂單的合約。
花店老闆可以透過 Web 服務找到花卉批發商。尋找新供應商的方法之一是利用「通用描述、探索與整合 (UDDI)」登錄來搜尋潛在的供應商。
選定供應商後,登錄會傳回相關資訊,指出如何聯絡符合花店老闆準則的花卉經銷商。
花店老闆可以取得每一個潛在供應商的 WSDL 檔,向每一個供應商索取價目表。
此 WSDL 可以從供應商的網頁下載、透過電子郵件收到,或從供應商的 UDDI 登錄項目中擷取。
WSDL 說明程序呼叫。
使用應用程式伺服器時,程序呼叫是 JAX-RPC 或 JAX-WS 程序呼叫。這些程序呼叫類型都會擷取價目表。
WSDL 檔也指定要求送達的「全球資源定址器 (URL)」。
花店老闆現在必須比較從每一個供應商收到的價格,決定要合作的供應商,並安排將來要填寫的訂單。
花店利用 Web 服務與供應商溝通來協議最佳價格,並完成訂單處理程序,現在可以透過 Web 銷售商品。
商品價目表需要發佈到網站,也需要一套機制讓客戶訂購花卉。
花卉供應商的 Web 服務用戶端部署在花店伺服器上。
當客戶透過 Web 進行交易來購買花卉時,訂單會透過程序呼叫傳送給供應商。
供應商會傳送訂單號碼和出貨日期的確認通知作為回應。
供應商維護庫存,花店老闆負責帳務和客戶訂單管理。
同樣地,花店型錄也可以根據每一個供應商的型錄而自動編製。
如果供應商直接向客戶供貨,則訂單追蹤查詢可直接傳送到供應商的訂單追蹤系統。
供應商也可以使用 Web 服務傳送由花店開立的訂單發票。
以前需要手動填寫表單、傳真或郵寄的程序,現在都可以自動完成,節省花店和供應商的人力成本。
使用 Web 服務很有益處,因為花店有更大量的存貨可銷售。
不再有商品維護開銷,花店可以供應原本可能沒有的產品給客戶。
透過 Web 銷售花卉讓花店收入增加,不需要另外籌資開店或將資源投入其他產品。
如需更詳細的實務範例,請參閱 Web 服務實務範例概觀的相關資訊,其中講述 Plants by WebSphere 這家虛構的線上園藝供應零售商的故事,以及他們如何落實 Web 服務概念。
如需其他示範 JAX-WS 和 JAX-RPC Web 服務的範例,請參閱資訊中心的「範例」小節。