代理调用现有的 Web service

在此方案中,代理调用现有的 Web service 实现。

该图显示了与 Web service 关联且已导入消息集中的 WSDL 文件。该消息集将部署到代理的一个流中。

符号的关键字:

该图描述了在其他图中使用的符号,那些图在此处没有描述,因为它们都有自己的描述。

可能的用户

设计步骤

  1. 导入 WSDL 以创建包含 SOAP 消息定义的消息集,其中 SOAP 消息由 WSDL 进行描述。
  2. 创建消息流以调用 Web service。如果 Web service 的传输机制是 HTTP,则将使用 HTTPrequest 节点。如果 Web service 的传输机制是 JMS,则将使用相应的 JMS 或 WebSphere MQ 节点。

运行时

您的消息流创建格式正确的 Web service 请求,调用 Web service,并解析该 Web service 响应。

示例 1

在该示例中,代理充当 Web service 的媒介。

  1. 创建具有以下节点的消息流:HTTPInput、HTTPRequest 和 HTTPReply。
  2. Web Service 客户机生成 Web service 请求。代理将该请求传递到 HTTPInput 节点中。
  3. 消息流以某种方式处理该消息。
  4. HTTPRequest 节点将请求发送到原始 Web service,并接收响应。
  5. 该流生成 Web service 响应,并将它放入 HTTPReply 节点。该响应可能全部或部分基于 HTTPRequest 节点接收到的响应。
  6. 代理将响应发送到 Web service 客户机。

如果为 WebSphere MQ 启用的另一个应用程序需要另一种格式的信息,消息流可以安排将该消息首先传播到 MQOutput 节点以传输到该应用程序,然后再依次传播到流的终点和 HTTPReply 节点,后者发送所需的 Web service 响应。这将需要使用适当的 Compute 节点来转换消息(如果需要)和处理消息头(例如,添加 MQMD 头)。

示例 2

在该示例中,代理提供对 Web service 的审计。

  1. 您设计将包含 HTTPInput 节点的消息流连接到 Warehouse 节点。
  2. 从 Web service 客户机接收的输入消息由 Warehouse 节点存储在数据库中。
  3. Warehouse 节点将消息传递到 HTTPRequest 节点上,该节点与 Web service 交互。
  4. 当接收到响应时,HTTPRequest 节点将响应传播到 HTTPReply 节点上。
  5. HTTPReply 节点为 Web service 客户机生成响应。

示例 3

WebSphere MQ 流与 Web service 交互
设计通过 HTTP 连接访问 Web service 的 WebSphere MQ 消息流。例如,您创建支持公司的人力资源部门流程的消息流。该流程必须检索雇员标识号并使用该信息增强该消息。雇员标识在公司的雇员目录中维护,可从 Web service 访问该目录。
这表示具有节点 MQInput、Compute1、HTTPRequest、Compute2 和 MQOutput 的消息流。HTTPRequest 节点与跨 HTTP 连接的公司目录服务器相互作用。

在本方案中,通常会取消选中 HTTPRequest 节点属性中的用 Web service 响应替换输入消息复选框,并将来自公司目录服务器的响应放入消息树中的临时位置(该位置由同一节点的树中的响应消息位置属性指定)。在 Compute2 中编写 ESQL 用于对结果进行解包,并适当增大最终消息。

示例 4

消息流充当 Web service 媒介
设计与 Web service 交互的消息流,该 Web service 已代表不知道新接口的 Web service 客户机更新其接口。这个新的消息流允许较旧的客户机不更新他们自己的接口就可以使用新接口访问服务器。
这表示具有节点 HTTPInput、Compute1、HTTPRequest、Compute2 和 HTTPReply 的消息流。HTTPRequest 节点与跨 HTTP 连接的公司目录服务器相互作用。

在 Compute1 中,编写 ESQL 以将客户机请求映射到服务器请求;在 Compute2 中,编写 ESQL 以将服务器响应映射到客户机应答。您可以在 MRM 域中定义这些请求、应答和响应消息,以便简化从一种格式到另一种格式的转换。

您可以将 HTTPRequest 节点配置为根据 HTTPInput 节点接收的头生成 HTTP 头,这样便可以传递 cookies 和特定于其他应用程序的头。HTTPReply 节点可以提供等价的任务从来自 Web service 的响应中抽取头,以返回到发起客户机。如果您要执行该操作,请在 HTTPRequest 和 HTTPReply 节点上选择相应的生成缺省 HTTP 头的位置...复选框。

在大多数方案中,发起请求是没有值的,您只需要来自服务的响应能够生成客户机应答消息。如果是这样,请在 HTTPRequestIf 节点上选择属性将输入消息替换为 Web service 响应。如果确实想要保留输入请求中的所有数据,可以将它们存储在 Compute1 的 LocalEnvironment 中,并在 Compute2 中检索它们,以便将它们包含在应答中。

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