天天看点

利用 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 中国

请点击此处查看全文

继续阅读