指南:开发 Web Service
该指南描述了如何使用 RAD6.0 建模环境发现、创建、测试、部署和发布 Web Service。
关系
相关元素
主要描述

介绍

RAD 6.0 提供了大量的工具来支持发现、创建、测试、部署和发布 Web Service。它们允许基于最新的标准来开发 Web Service,并支持部署到多个运行时环境中。这些工具还提供许多向导来支持和促进不同的开发方法。本文档描述了 RAD 6.0 提供的,用以开发 Web Service 的各种方法,并论述了与 Web Service 部署和互操作性级别选项相关的开发注意事项。

开发方法

RAD 6.0 中的 Web Service 向导允许您使用自上而下的方法或自下而上的方法创建 Web Service。 自上而下法使您可以从一个 Web Service 描述语言(WSDL)文档开始,并生成可用于创建 Web Service 的框架 Java Bean 或框架 Enterprise JavaBean(EJB)。自下而上法允许您根据现有的 Java Bean、EJB、文档访问定义扩展程序(DADX)文件、统一资源定位符(URL)或 Web Service 部署描述符(ISD)文件创建 Web Service。图 1 描绘了 RAD 6.0 提供的 Web Service 创建方法。

创建 RAD 6.0 Web Service 的方法

图 1 - RAD 6.0 Web Service 的创建方法

在 Web Service 创建期间,该向导可以有选择地允许您:

  • 在使用 Web Service 浏览器工具创建 Web Service 后立即测试该 Web Service。
  • 生成您可以在客户端应用程序中用于访问 Web Service 的客户端代理。
  • 使用通用测试客户机(UTC)工具或该工具生成的样本 JSP 应用程序测试客户端代理。
  • 使用 Web Service 浏览器工具将该 Web Service 发布到 Universal Description,Discovery and Integration(UDDI)注册表。

在 RAD 6.0 中开发的 Web Service 必须在 Web 或 EJB 项目中创建,并包含符合以下标准的工作产品:

  • Web Service 定义语言(WSDL)版本 1.1
  • 简单对象访问协议(SOAP)版本 1.1(包括 Apache SOAP 2.2 和 2.3 实施)
  • Universal Description,Discovery and Integration(UDDI)版本 2.0
  • Web Service 检查语言(WSIL)版本 1.0
  • 基于 Java API for XML 的远程过程调用(JAX-RPC),也称为 JSR-101
  • JSR-109 和 JSR-921(实施 Enterprise Web Service)
  • Web Service 互操作性(WS-I)基本概要信息 1.0(可选符合标准)
  • WS-Security

关于这些主题的更多信息,请参阅“概念:Web Service for J2EE”。

自上而下开发法

自上而下开发法允许您采用 WSDL 文档中包含的某一 Web Service 的抽象定义,并为其生成具体的实施。(请注意:RAD 6.0 还提供创建 WSDL 文档的向导)。支持以下两种方法:

  • 从 WSDL 文档创建一个框架 Java Bean

    您可以根据 WSDL 文档创建一个框架 Java Bean,并将其展示为一种 Web Service。生成的 Java Bean 方法对应于 WSDL 文档中描述的操作,并包含您可以替换的普通实施。以下注意事项适用于此方法及其生成的工作产品:

    • 您可以输入一个 WSDL 文档的 URI,或者输入指向该 WSDL 文件的 WSIL 或 HTML 文档的 URI,作为 Web Service 的来源。
    • 该 WSDL 文件必须包含一个服务元素。您也可以(可选地)为产生的 Web Service 生成标准化 WSDL 引用(WSIL)文档。
    • 生成的 Web Service 必须在 Web 项目中创建。
  • 从 WSDL 文档创建框架 EJB

    与上面一种方法类似,此方法允许您根据 WSDL 文档创建框架无状态会话 EJB,并将其展示为一种 Web Service。EJB 中的方法对应于 WSDL 文档中描述的操作,并包含您可以替换的普通实施。以下注意事项适用于此方法及其生成的工作产品:

    • 仅在您选择 IBM WebSphere V6 作为 Web Service 运行时环境时,才能使用此方法(请参阅“部署依赖关系”)
    • 您可以输入一个 WSDL 文档的 URI,或者输入指向该 WSDL 文件的 WSIL 或 HTML 文档的 URI,作为 Web Service 的来源。
    • 该 WSDL 文件必须包含一个服务元素。您也可以(可选地)为产生的 Web Service 生成标准化 WSDL 引用(WSIL)文档。
    • 生成的 Web Service 必须在 EJB 项目中创建。此外,创建一个 Router 项目以使该 Web Service 可通过 HTTP 传输接收请求(注意:此方法不支持 JMS 传输)。Router 项目可以是 Web 项目或 EJB 项目,且不能是包含该 Web Service 的同一项目,但必须处在包含 EAR 文件的同一项目中。

自下而上开发法

自下而上开发法的目标是将现有的应用程序组件或资源展示为 Web Service。下面讨论了各种方法。

  • 从 Java Bean 创建 Web Service

    此方法允许您选择现有的 Java Bean,并将其方法展示为一种 Web Service。生成的工作产品包括:

    • WSDL 文件:此文件描述了该 Web Service,且文件扩展名为 .wsdl。您可以在三种 WSDL 风格之间选择(Document/Literal、RPC/Literal 和 RPC/Encoded)。关于每种选项的互操作性影响,请参阅“符合 WS-I 基本概要信息”。
    • 服务端点接口(SEI):此 Java 接口定义 Web Service 的方法。其文件名后缀为 _SEI。
    • Web Service 部署描述文件:webservices.xml 文件指定了该 Web Service 的实施和部署细节。
    • JAX-RPC 映射文件:这些文件定义该 Web Service 的 Java 元素如何对 WSDL 相互映射。
  • 从 EJB 创建 Web Service

    您可以将无状态会话 Bean 的方法展示为一种 Web Service。生成的工作产品类似于对 Java Bean 生成的工作产品,并包括一个 WSDL 文件、SEI、Web Service 部署描述符和 JAX-RPC 映射文件。以下注意事项适用于此方法及其生成的工作产品:

    • 生成的 Web Service 必须在 EJB 项目中创建。
    • 必须创建 Router 项目才能使该 Web Service 可从客户端接收请求。如果您在使用 SOAP over HTTP 作为您的传输方法,则创建 Router 项目作为 Web 项目。否则,如果客户端正在使用 SOAP over JMS,则将该项目创建为一个 EJB 项目(在这种情况下 JMS Router 作为 Message-Driven Bean 来实施)。Router 和 Web Service 项目不能相同,但必须包含在同一 EAR 文件中。
    • 如果您正在使用 SOAP over JMS 传输,则必须在您的服务器中配置 JMS 提供程序。您还将无法使用 Web Service 浏览器测试您的 Web Service。
  • 从 DADX 文件创建 Web Service

    此方法使您可以将通过 DB2 XML Extender 或常规 SQL 语句访问的 DB2 数据封装在 Web Service 中。通过 DB2 XML Extender 访问的数据包括使用文档访问定义(DAD)文档映射到 DB2 数据库的 XML 文档。该方法的起点是一个 DADX 文件,该文件指定如何使用由规则 SQL 语句定义的或在 DAD 文件中定义的一组操作来创建 Web Service。生成的工作产品包括标准 WSDL 文件、SEI、Web Service 部署描述符和 JAX-RPC 映射文件。以下注意事项适用于此方法及其生成的工作产品:

    • 只有您选择 IBM SOAP 作为您的 Web Service 运行时环境,才可以使用此方法(请参阅“部署依赖关系”)。
    • 您可以(可选地)从一个或多个 SQL 语句、存储过程和 DAD 文件的组合生成 DAAD 文件。
    • DADX 文件应包含在一个 DADX 组中,该组定义了 JDBC 连接和该组内 DADX 文件之间共享的其他信息。
    • 生成的 Web Service 必须在 Web 项目中创建。
  • 从 URL 创建 Web Service

    从 Web Service 的 URL,您可以创建它的 Web Service,该服务直接访问远程服务器上运行的 Servlet。该向导允许您根据端口、操作和参数描述该 Servlet 的接口,并生成描述所产生的 Web Service 的 WSDL 文档。以下注意事项适用于此方法及其生成的工作产品:

    • 只有您选择 IBM SOAP 作为您的 Web Service 运行时环境,才可以使用此方法(请参阅“部署依赖关系”)。
    • 通常,端口对应于 URL 的域名/主机名部分,操作对应于 Servlet 环境根和 URI 部分,而参数对应于 Servlet 的输入参数。
    • 生成的 Web Service 必须在 Web 项目中创建。
    • 没有 Web Service 需要部署,因为它已经由该动态 URL 实施。
  • 从部署描述符(ISD)文件创建 Web Service

    部署 Web Service 时,其配置和运行时属性是在 ISD 部署描述符文件中定义的。此文件提供关于应由 SOAP 运行时环境提供给客户端的服务的信息,例如,URI、方法、实施类(JavaBean 和 EJB)、串行器和反串行器。您可以使用这些提供的信息从 ISD 文件创建 Web Service。 这允许您封装现有的 Web Service 实施,并将它们作为新的 Web Service 重新部署,而不必重新指定它们的配置和映射信息。以下注意事项适用于此方法及其生成的工作产品:

    • 只有您选择 IBM SOAP 作为您的 Web Service 运行时环境,才可以使用此方法(请参阅“部署依赖关系”)。
    • 生成的 Web Service 必须在 Web 项目中创建

开发指南

以下各部分讲述与在 RAD 6.0 中开发 Web Service 相关的重要注意事项。它们基于您的 Web Service 的部署和符合 WS-I 要求来描述所提供的开发选项。

部署依赖关系

可用于创建 Web Service 的方法(自上而下和自下而上)取决于您要部署的运行时环境。RAD 6.0 支持以下 Web Service 运行时环境:

  • IBM WebSphere V6

    这是 RAD 6.0 中的缺省 Web Service 运行时环境和针对生产使用而推荐的运行时环境。它同时支持 JMS 和 HTTP 传输协议,从而允许 Web Service 客户机和服务器通过 HTTP 连接或 JMS 队列和主题相互通信。注意,如果要通过 JMS 传输来访问某一 Web Service,则必须将该 Web Service 作为 EJB 实施。

  • IBM SOAP

    IBM SOAP 运行时环境支持 Apache SOAP V 2.2 和 2.3 协议(请参阅“资源”),并且是 WebSphere Studio V5.0 和更早版本中支持的唯一 Web Service 运行时环境。只在需要向后兼容时使用它。

  • Apache Axis 1.0

    此运行时环境支持 Apache Axis V1.0 SOAP 实施(请参阅“资源”)。由于潜在的 Web Service 互操作性问题,故不推荐用于生产(请参阅该工具的“帮助内容”中的“使用 Apache Axis 1.0 运行时环境的问题”)。

建议您选择 IBM WebSphere V5 运行时环境,除非您的部署目标特别需要您使用 Apache SOAP 或 Apache Axis 实施(如果是这样,请注意该工具的“Web Service 的局限”帮助内容中描述的相关局限)。表 1 总结了 RAD 6.0 为每种运行时环境支持的 Web Service 创建方法。

方法 IBM WebSphere V6 IBM SOAP Apache Axis 1.0
从 WSDL 文档创建框架 JavaBean
从 WSDL 文档创建框架 EJB
从 JavaBean 创建 Web Service
从 EJB 创建 Web Service
从 DADX 创建 Web Service
从 URL 创建 Web Service
从 Web Service 部署描述符(ISD)创建 Web Service

表 1 - 运行时环境所支持的 Web Service 创建方法

符合 WS-I 基本概要信息

Web Service 互操作性(WS-I)基本概要信息是 WS-I 组织发布的一组需求,以推动跨平台、操作系统和编程语言的 Web Service 互操作性。它定义了 Web Service 为符合 WS-I 而必须满足的 WSDL 和协议(SOAP/HTTP)通信量需求。RAD 6.0 包含可以用于验证 Web Service 是否符合 WS-I 基本概要信息 1.0 需求的验证工具。您可以在开发 Web Service 之前为工作空间或项目设置一个 WS-I 符合级别(必需、建议或忽略(缺省)),或在其开发后运行这些验证工具。

建议您开发符合 WS-I 基本概要信息的 Web Service。要确保这一点,则应遵循以下指南:

  • 对于 WSDL 样式,使用 Document/literal 或 RPC/literal(RPC/encoded 不符合 WS-I)
  • 使用 SOAP over HTTP 作为消息和传输协议(SOAP over JMS 不符合 WS-I)
  • 不要对该 Web Service 使用任何安全性选项(XML 数字签名和 XML 加密不符合 WS-I)

客户端代理注意事项

  • 创建 Web Service 时,您可以选择生成的客户端代理有两种:
  • Java Bean 代理

Java Bean 客户端代理允许您通过远程过程调用来调用 Web Service 方法。如果为客户端运行时环境选择了 IBM SOAP 或 Apache Axis 1.0,则只能在客户端 Web 项目中创建该代理。 否则,对于 IBM WebSphere V6 客户端运行时环境,可在 Web、Java、EJB 或应用程序客户机项目中创建该代理。

  • Web Service 用户定义的功能

此选项允许您为您要调用的 Web Service 的每个方法都创建 DB2 用户定义的功能(UDF)。它要求在数据库中安装有 DB2 Web Service 消费者 UDF 包和 DB2 XML Extender。该 UDF 创建并添加到数据库定义中,并且将所有相关客户端工作产品都存储在某个 Web 项目中。

  • 为 Web Service 和 Web Service 客户端选择一个不同的 EAR,以减少遇到运行时错误的可能性。请记住,客户端应为不同于 Web Service 的应用程序,Web Service 并不用于应用程序之间的通信。

资源

关于以下主题的更多信息,请参阅相应的链接。