代理实现现有的 Web service - 详细

这是典型的端对端场景的概述,在该场景中,您有一个 Web Service 客户机,想要代理授予它一些现有的非 Web Service 功能。

现有的基于 C 或 Cobol 的系统提供某些业务逻辑,该系统能有效地展示为 Web service。

与前例类似(代理实现新 Web service - 详细),代理具有某种机制,调用对现有系统的操作(也就是,系统展示到代理的接口)。 通常,将为 WebSphere MQ 启用现用系统,这意味着它会接收包含应用程序数据的 MQ 消息、将这些消息分派到底层执行,然后打包成返回值作为 MQ 响应。提供到这些现有操作的数据结构,以及这些操作返回的数据结构定义在 C 头文件或 COBOL 副本中。

不过,在本示例中,对 Web service 的外观也有强制约束,也就是,我们已为 Web Service 客户机准备了 WSDL 定义。

可能的场景是,一个广泛分布的 Web Service 客户机已赋予用户对特定业务能力的访问权,代理的角色将是为基于现有系统的新实施提供相同的接口。 也许最初的 Web service 提供程序提供的服务质量不同或由于某些原因而中断服务。

如前面一样,代理可以在 WebSphere MQ 上调用现有的系统功能。

要执行该方案:

  1. 导入现在的 API 数据结构(例如,使用 C 导入器)。如果要使用文档类型的 WSDL,您必须在代理模型中用导入器向导创建所需的全局元素。WS-I(请参阅http://www.ws-i.org/)建议,Web service 有效内容的名称空间应是限定的,因此用户应在导入时指定目标名称空间。

    在该阶段,您已有要用于调用现有操作的数据的消息模型。

  2. 导入现有 WSDL 文件,为要求的实例文档创建适当的消息模型(请参阅导入数据结构)。 该流将解析对应的 SOAP 请求,并需要与必需的现有数据格式之间来回变换。 您可以检查导入的消息定义,并使用 ESQL 和/或映射编辑器来帮助创建流。 您不创建类别文件,也不从代理模型生成 WSDL。
  3. WSDL 导入步骤将导致相应的 SOAP mxsds 自动包含在消息集中。具体地讲,这包括 SOAP 封包 mxsd 和 SOAP 解码 mxsd(如果需要)。
  4. 执行消息流以接收 Web service 请求,即,作为 Web service 提供程序。根据客户机使用的传输,端点节点为 HTTP 或 MQ。 输入节点属性如下:
    • 域:“MRM”
    • 集:包含 SOAP 封包定义的消息
    • 类型:“封包”
    • 格式:“XML1”
  5. 当流调用解析器时,解析器会创建一个包含 SOAP 封包的逻辑树,如同 pre-canned SOAP mxsd 定义的。在 SOAP 封包(SOAP 体和头)中的连接点上解析自动继续进行,试图与消息集中的其他消息定义相匹配。在输入节点应用验证(如果需要)。

    在该阶段,您已有逻辑树,但是却不知道已接收的 SOAP 有效负载的内容。您可以查看 HTTP SOAPAction/action 字段以确定可能的内容,但该操作仅用于 HTTP。(WS-I 不建议使用 SOAPAction。)

  6. 您可以在现有系统中,提供从允许的有效内容消息到必需消息的单一映射。 例如,单个映射定义就可以将消息 message1amessage1b 映射到同一个 message2
    或者,可以为每个消息类型或相关消息类型的组提供单独的映射。此方法可能提高映射定义的可管理性和可复用性。 但缺点是用户必须确定已接收到的有效负载,然后才能应用映射。这可以在 ESQL 中执行,如下所示:
     
     DECLARE SOAPENV NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
     SET contentType = FIELDNAME(InputBody.SOAPENV:Body.*[<]);
     IF (contentType = ‘foo’) ...
     
    or using a field reference, for example:
     
     DECLARE R REFERENCE TO InputRoot.MRM.SOAPENV:Body.*[<];
     IF (FIELDNAME(R) = “foo”) ...
     
    一旦内容已知,流可能相应地分支(例如 RouteToLabel),每个分支具有特定于内容的 Mapping 和/或 Compute 节点。 对于简单流,所有逻辑可能保存在单个 Compute 节点中(如果需要)。

    立即调用现有系统(通常在 WebSphere MQ 上)、检索任何预期响应并传播 Web service 应答。这与前面的场景类似(代理实现新 Web service - 详细),不同之处在于,数据流也必须在 Web Service 客户机所用的数据格式和为 WebSphere MQ 启用的现有系统所用的格式之间映射。数据流设计器必须考虑到业务应用程序在合理的时间段内不发送预期响应的可能性。

相关概念
Web service、WSDL 和消息流
代理调用现有的 Web service
代理实现新的 Web service 接口
代理实现现有 Web service 接口
代理实现新 Web service 的非 Web service 接口
相关任务
代理实现现有的 Web service - 详细
代理调用现有的 Web service - 详细
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac34580_