在 SOAP over JMS Web 服务中使用 WebSphere MQ,第 1 部分: 部署和配置 Web 服务
 

2009-03-27 作者:Mohab El-Hilaly,Islam H. Azaz, Alaa Youssef 来源:IBM

 
本文内容包括:
SOAP over Java™ Message Service (JMS) 是针对 SOAP over HTTP 的替代消息机制。与使用 SOAP over HTTP 相比,使用 SOAP over JMS for Web services 可以提供更可靠和可伸缩的消息支持。尽管 JMS 提供者可能无法跨平台互操作,但是您可以在企业中使用 SOAP over JMS,尤其是在企业使用面向消息的中间件(Message Oriented Middleware,MOM)的情况下。由于 IBM® WebSphere® MQ 是使用得最广泛的消息平台之一,本文将向您介绍如何使用 WebSphere MQ 作为消息提供者,从而开发、部署和测试一个带 SOAP over JMS 绑定的示例 Web 服务。其中专门讨论了 WebSphere MQ 或 IBM WebSphere Application Server 所特有的配置。

引言

SOAP 与传输无关,可以绑定到任何协议;SOAP over JMS 是针对标准 SOAP over HTTP 消息的替代消息机制。SOAP over JMS 经证明比 SOAP over HTTP 更加可靠和可伸缩。其可靠性和可伸缩性反映了在我们的例子中用作 JMS 提供者的 WebSphere MQ 的可靠性和可伸缩性。它之所以可靠是因为消息传递得到了保证,可伸缩是因为它可以支持大容量连接。

SOAP over JMS 还允许 Web 服务客户端异步调用服务而不等待响应。尽管同步和异步传输协议都可以实现异步调用风格,但是 JMS 使得异步调用的实现对服务请求者和服务提供者来说都更加容易。

本文中使用的场景

本文演示了 Web 服务客户端如何通过将 JMS 消息放入 WebSphere MQ 队列(输入队列),然后作为 JMS 消息从另一个队列(响应队列)接收响应,从而调用 Web 服务。其中演示了如何配置 IBM WebSphere Application Server V6.1 上部署的示例 Web 服务,以使用 MQ 队列作为其输入和响应队列。出于测试目的,我们将使用 RFH2Util(一个广泛使用的 WebSphere MQ 测试实用工具)作为 Web 服务客户端。图 1 显示了我们的场景的拓扑:

图 1. 本文中使用的拓扑
拓扑
 

该 Web 服务将要求在应用程序服务器上定义许多 JMS 资源或托管对象。下面让我们看看具体有些什么资源或对象:

  1. JMS 侦听器端口:由 Web 服务用于从请求队列收集 SOAP/JMS 请求消息。侦听器端口由 WebSphere Application Server 运行时用于轮询请求队列,以收集 SOAP/JMS 消息并传递消息以激活 Web 服务。
  2. JMS 请求队列连接工厂:由侦听器端口用于连接到承载请求 MQ 队列的 MQ 队列管理器。
  3. JMS 请求队列:表示请求 MQ 队列的 JMS 托管对象。Web 服务使用它来从请求队列收集 SOAP/JMS 消息。
  4. JMS 应答队列连接工厂:由 Web 服务用于连接到承载应答 MQ 队列的 MQ 队列管理器。

开始起步

要使此示例顺利工作,应该安装以下必备软件:

  1. WebSphere MQ 应该已经安装在系统上,并带有一个队列管理器、一个请求队列和一个应答队列。(本文中使用了 V6,但相同的步骤完全适用于 V5 和 V7。)
  2. WebSphere Application Server 应该已经安装并配置就绪。
  3. 应该安装某个开发环境;这可以是 IBM Rational® Solution Architect 或 IBM WebSphere Integration Developer。

安装和配置所有先决软件之后,您就准备好开始进行 WebSphere Application Server 上的配置了。我们首先配置请求和响应队列的队列连接工厂。

  1. 启动 WebSphere Application Server。
  2. 运行 WebSphere Application Server 上的管理控制台。
  3. 在接下来的几个步骤中,我们将为请求队列设置队列连接工厂,然后创建应答队列连接工厂。
  4. 单击如图 2 所示的队列连接工厂。

    图 2. 队列连接工厂
    队列连接工厂
     
  5. 选择所需的范围并单击 New

    图 3. 队列连接工厂
    新建队列连接工厂
     
  6. 选择 WebSphere MQ messaging provider

    图 4. 队列连接工厂消息提供者
    QCF 消息提供者
     
  7. 填入以下内容,然后单击 Save
    • 对于名称,请选择适当的名称。
    • 对于 JNDI 名称,请输入 jms/ReqQCF
    • 插入队列管理器名称、主机和端口。(此信息来自于预安装的 WebSphere MQ。)
    • 对于传输,请选择 Client

    图 5. 队列连接工厂属性
    队列连接工厂属性
    对应答队列连接工厂重复相同的步骤,但是 Web 服务名称为 WebServicesReplyQCF,JNDI 名称为 jms/WebServicesReplyQCF

    在接下来的几个步骤中,我们将创建请求队列,消息将按使用 Web 服务的顺序放入此队列中。

  8. 单击 Queues
  9. 选择所需的范围并单击 New

    图 6. 创建新队列
    创建新队列
     
  10. 填入以下值:
    • 对于名称,请选择适当的名称。
    • 对于 JNDI 名称,请输入 jms/ReqQ
    • 插入队列管理器名称、主机和端口。
    • 填入 MQ 上承载的基本队列名称。
    • 单击 OK,然后单击 Save

    图 7. 队列属性
    队列属性
     
  11. 下面我们需要创建侦听器,以便检测放入队列中的消息,以及服务随后对消息的使用。
  12. 从 Application Server 管理控制台中,选择 Servers。您的应用程序服务器很可能将是 server1。在“Communications”下面,展开“Messaging”并选择 Message Listener Service
    图 8. 消息端口
    消息端口
     
  13. 单击 Listener Ports

    图 9. 侦听器端口
    侦听器端口
     
  14. 单击 New
  15. 填入以下值:
    • 对于名称,请输入 MQListener
    • 对于连接工厂,请输入 jms/ReqQCF
    • 对于队列,请输入 jms/ReqQ
    • 单击 OK,然后单击 Save

    图 10. 侦听器端口属性
    侦听器端口属性
     
  16. 重新启动 WebSphere Application Server,您现在已经为部署和运行 SOAP/JMS Web 服务做好准备了。

导入和部署 Web 服务

在经过之前的服务器配置之后,已经可以对 Web 服务进行部署和测试了。下面我们需要导入和构建项目交换,并在服务器上对其进行部署。

  1. 在 Project Explorer 中,单击 File > Import

    图 11. Project Explorer
    Project Explorer
     
  2. 选择 Project Interchange 并单击 Next
    图 12. 选择项目交换
    选择项目交换
     
  3. 浏览到所下载的名为“DeveloperWorksService.zip”的项目交换文件(请参阅本文的下载部分)。选择所有文件然后单击 Finish

    图 13. 浏览项目交换
    浏览文件
     
  4. 通过进入 Project 菜单并单击 Clean 以清理并构建工作区。
  5. 将项目添加到服务器:

    图 14. 将项目添加到服务器
    将项目添加到服务器
     
  6. 重新启动应用程序服务器,现在您已经为测试 Web 服务做好准备了。

测试 Web 服务

基本测试将确保 Web 服务配置正确并且正常工作。可以采用若干不同的方法来测试异步 Web 服务。如果选择下面描述的方法,您需要一个能够在 MQ 队列上插入消息的 JMS 客户端。

下面的方法使用了 Message Broker 附带的名为 rfutil 的工具。此工具可以促进 MQ 队列上的消息插入和检索。它还为您提供了根据需要修改 JMS Header 属性的选项,以便 Web 服务能够正常工作。

如果您按这里的描述下载 RFHUtil 示例文件,要注意您需要根据本地环境中的 MQ 配置修改 Queue Manager、Queue Name 和 JMS replyTo。

下面的步骤测试该 Web 服务是否正在侦听请求消息所插入到的目标队列。它还测试该 Web 服务是否使用 JMS Reply To Header 来发送响应。

  1. 打开 RFHUtil。
  2. 单击 File > Open。选择文件 SampleRFHUtil,您可以下载该文件(请参阅下载)。

    图 15. 打开示例 RFHUtil 文本文件
    示例 RFHUtil 测试文件
     
  3. 更改以下属性以匹配您的本地环境:
    • Queue Manager Name
    • Queue Name
    • MQMD 选项卡下的 Reply to Queue Manager name 和 Reply Queue
    • jms 选项卡下的 Reply To 和 Destination name
  4. 在 Main 选项卡下,单击 Write Q

    图 16. 将输入写到队列
     将输入写到队列
     
  5. 将 Queue name 更改为响应队列(其值应该与 JMS Header 中的 Reply To 相同)并单击 Read Q
  6. 切换到 Data 选项卡并观察响应数据。

结束语

本文中的步骤指导您完成了使用 WebSphere MQ 作为消息提供者来开发、部署和测试一个带 SOAP over JMS 绑定的 Web 服务的过程。与 SOAP over HTTP 相比,用于 Web 服务的 SOAP over JMS 可以提供更加可靠和可伸缩的消息支持。

下载

描述 名字 大小 下载方法
Sample JMS Web Service DeveloperWorksService.zip
9KB
Sample RFHUtil input SampleRFHUtil.zip
1KB

参考资料

学习 获得产品和技术
  • 下载 IBM 产品评估版,获得来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。
讨论

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织