天天看點

利用 WAS V6.1 開發安全可靠的 Web Services, 第 1 部分:開發基于 JAX-WS 的 Web Services

随着 Web Services 在業界的應用越來越廣泛,其安全性和可靠性也日益受到人們關注。WS-Security 規範保證了消息的完整性和機密性。WS-Security 規範也描述了如何利用安全令牌來進行身份認證。WS-Reliable Messaging 規範使得分布式的應用程式在系統,網絡失敗時仍然可以進行可靠的消息傳輸。 本系列文章介紹了如何利用 WebSphere Application Server V6.1 和 feature pack for web service 實作 WS-Security 和 WS-Reliable Messaging。
利用 WAS V6.1 開發安全可靠的 Web Services, 第 1 部分:開發基于 JAX-WS 的 Web Services
您可以通路“WebSphere Application Server V6.1 Feature Pack 專題”了解更多和 WAS V6.1 feature pack 相關的資源:
  • WebSphere Application Server V6.1 Feature Pack 專題

本系列的文章分為三個部分來介紹如何開發安全可靠的 web service:

第一部分:基于 JAX-WS 的 web service 的開發。

第二部分:實作可靠的消息傳遞。

第三部分:實作安全的 web service。

JAX-RPC 和 JAX-WS

JAX-RPC 是 Java 社群的工作成果,為用戶端端和伺服器端的 Web 服務實作提供一個衆所周知的 API。通過采用一個面向 Web 服務的标準 API,JAX-RPC 旨在幫助服務使用者(用戶端)和服務實作者獲得最大程度的靈活性,方法是通過把服務互操作性的重擔轉移到運作時的基礎架構。通過采用标準組織提供的全局标 準、使用定義明确的概要檔案(例如 WS-I)以及建立 IDE 和其他開發工具來與這些标準相比對,運作時架構可以提供連接配接級别的互操作性。就其本質而言,JAX-RPC 定義并使用了一種基于 XML 的遠端過程調用機制。它使伺服器(即服務提供者)能夠用标準的 API 定義其服務并且能夠用 WSDL 描述其服務;它使用戶端(即服務消費者)能夠用标準的 API 與伺服器進行通信。

JAX-WS 是 JAX-RPC 的後續版本,簡化了使用 Java 技術開發 web service 的工作。 JAX-WS 使用 JAXB 提供資料綁定服務,并支援通過定制來控制生成的服務端點接口。通過使用 J2SE 1.5 的 annotations 特性,JAX-WS 簡化了 Web 服務開發,并縮小了運作時 JAR 檔案的大小。

WebSphere Application Server(WAS) V6.1 和 feature pack for web service 同時支援 JAX-RPC 和 JAX-WS 兩種程式設計模式。目前 WS-Reliable Messaging 隻支援符合 JAX-WS 規範的 Web Services,是以在本例中我們将介紹如何使用 Application Server Toolkit V6.1 開發基于 JAX-WS 的 web service。生産環境則使用安裝過 feature pack for web service 的 WAS V6.1。

基于 JAX-WS 規範的 WS-Security 和 WS-Reliable Messaging 的實作通過将符合需求的政策集(policy set)綁定到服務提供者或服務用戶端應用程式上即可。

利用 WAS V6.1 開發安全可靠的 Web Services, 第 1 部分:開發基于 JAX-WS 的 Web Services
利用 WAS V6.1 開發安全可靠的 Web Services, 第 1 部分:開發基于 JAX-WS 的 Web Services
利用 WAS V6.1 開發安全可靠的 Web Services, 第 1 部分:開發基于 JAX-WS 的 Web Services

開發基于 JAX-WS 的 Web Services

既可以通過已有的 WSDL 檔案自頂向下,也可以根據實作類自底向上的開發基于 JAX-WS 的 Web Services。在本文中僅以自頂向下的方法為例介紹如何開發一個 Calculator 服務,實作簡單的加法功能。開發的步驟有三步:

1.根據 WSDL,使用 wsimport 指令生成服務提供者和服務請求者需要的各種類檔案

2.實作服務提供者

3.實作服務請求者

第一步:根據 WSDL 生成相關的服務端和用戶端類

Calculator 服務的 wsdl 檔案 Cal.wsdl 如下:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://services.ws.ibm.com" ...>
<wsdl:types>
<schema targetNamespace="http://services.ws.ibm.com" ...>
<element name="addResponse">// 服務響應
<complexType>
<sequence>
<element name="addReturn" type="xsd:int"/>// 服務傳回值
</sequence>
</complexType>
</element>
<element name="add">
<complexType>
<sequence>
<element name="a" type="xsd:int"/> // 服務的輸入參數
<element name="b" type="xsd:int"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
……
<wsdl:portType name="Cal">// 服務端口
<wsdl:operation name="add">// 服務操作
<wsdl:input message="intf:addRequest" name="addRequest"/>// 服務調用的輸入
<wsdl:output message="intf:addResponse" name="addResponse"/>// 服務響應輸出
</wsdl:operation>
</wsdl:portType>
……
<wsdl:service name="CalService">// 服務名稱
<wsdl:port binding="intf:CalSoapBinding" name="Cal">
<wsdlsoap:address location="http://localhost:9082/Services/CalService"/>// 服務位址
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
      

将 Cal.wsdl 檔案複制到 {WAS_INSTALL_ROOT}/bin/ 目錄,在 cmd 中運作 wsimport 指令:

本文轉自:IBM developerWorks 中國

請點選此處檢視全文

繼續閱讀