现在的位置: 首页 > 综合 > 正文

用 IBM WebSphere MQ JMS 提供程序

2013年05月03日 ⁄ 综合 ⁄ 共 4867字 ⁄ 字号 评论关闭

IBM® WebSphere® Process Server 和 IBM WebSphere Enterprise Service
Bus 产品都包括对调用和提供 Web 服务的支持。本系列文章第 1 部分介绍了 WebSphere Process Server 和 WebSphere
Enterprise Service Bus V6.02 及 V6.1 中 SOAP over Java Message Service (JMS)
协议的支持。本文是系列文章的第二部分,将揭示如何更改 SOAP over JMS 导出和导入所引用的 Java Naming and Directory
Interface (JNDI) 资源,以便它们可以使用 IBM WebSphere MQ JMS 提供程序,而不是 Service Integration
Bus (SIBus) JMS 提供程序,来接收和发送 SOAP 消息。要按本文所述的步骤进行操作,您应该了解如何在 IBM WebSphere
Integration Developer 中创建模块,以及如何创建 WebSphere MQ 资源。

引言

SOAP over JMS 协议支持仅限于嵌入式 (SIBus) JMS 提供程序所拥有的 JMS
资源的使用,这是由于开发工具将自动地生成这些资源。运行时实现使用了 JMS API,因此通过替换生成的 JMS 资源,允许使用 WebSphere MQ JMS
提供程序来传输 SOAP 消息 (SOAP/MQ JMS)。

了解如何使用 Web 服务 SOAP over JMS 绑定来配置 WebSphere Process Server 和 WebSphere
Enterprise Service Bus 中的导入和导出,以便使用 WebSphere MQ JMS 资源。本文提供了一些示例 Service
Component Architecture (SCA) 应用程序,这些应用程序都包含使用基于 Web 服务的 SOAP over JMS
绑定的导入和导出。本文还描述了如何对它们进行修改,以便使用 WebSphere MQ JMS
资源。在阅读完本文之后,您可以将本文所描述的步骤应用于其他类似的导入和导出。

导出和导入在操作过程上稍有不同。导出使用消息驱动的 Bean(Message-Driven Bean,MDB)来接收请求,并且它们向每个请求的
JMSReplyTo Header 所指定的目的地发送响应。您可以通过 IBM WebSphere Application Server 管理控制台来修改它们的资源。

导入并不使用 MDB 接收响应,可以将其配置为对每个请求使用单个应答队列或者一个临时应答队列。可以通过 WebSphere Integration
Developer 工具中的 JMS URL 来定义它们的资源。对于导出,WebSphere MQ JMS 提供程序和 SIBus JMS
提供程序之间的关键区别在于,后者使用 Java 2 Platform, Enterprise Edition (J2EE) Connector
architecture (JCA) 资源适配器作为其实现。这意味着 MDB 是通过激活规范对象来进行配置的,而前者并没有使用
JCA,它是通过侦听器端口对象来进行配置的。WebSphere Integration Developer
使得集成开发人员无需编写复杂的代码即可容易地构建和调用基于 SOAP over JMS 的 Web 服务。WebSphere Integration
Developer 将自动地生成 Web 服务资源 JNDI 名称,并在安装时使用 SIBus JMS 提供程序自动地创建这些资源。

要执行这些配置过程,您需要具有下列软件:

本文中的应用程序模块使用 WebSphere Enterprise Service Bus 版本 6.0.2 和 6.1
进行开发和测试。这些模块是用来说明如何在 WebSphere Integration Developer 和 WebSphere Process Server
或者 WebSphere Enterprise Service Bus 中使用 SOAP over JMS 创建和配置 SCA 模块的示例。WebSphere
Integration Developer V6.1 中提供了可下载的项目交换文件。



回页首

WebSphere MQ 版本

要使用 WebSphere MQ JMS 提供程序,请确保您的系统中同时安装了 WebSphere MQ 服务器和 WebSphere MQ JMS
客户端库,并且它们的版本是兼容的。WebSphere Process Server 和 WebSphere Enterprise Service Bus 自版本
6.0.2 以后都支持 WebSphere MQ JMS 导入和导出绑定,并且这需要带 Refresh Pack 6.0.2.0 的 WebSphere MQ
服务器版本 6.0 以上。WebSphere Process Server 和 WebSphere Enterprise Service Bus 运行时提供了
WebSphere MQ JMS 客户端库。

如果 WebSphere MQ 对于 WebSphere Process Server 或者 WebSphere Enterprise Service
Bus 运行时来说是本地的,那么您可能需要通过 WebSphere Application Server 管理控制台将环境变量
${MQ_INSTALL_ROOT} 的值更改为 ${WMQ_INSTALL_ROOT}。或者,从
${WMQ_INSTALL_ROOT}/java/lib 中将 JAR 文件 com.ibm.mqjms.jar
com.ibm.mq.jar 复制到 ${WAS_INSTALL_ROOT}/java/lib 中。这样可以确保 WebSphere
Process Server 和 WebSphere Enterprise Service Bus 所使用的 WebSphere MQ 客户端库
WebSphere MQ JMS 版本与 WebSphere MQ 服务器是兼容的。



回页首

点到点消息传递所需的资源

这个部分描述了定义 WebSphere MQ 和 WebSphere MQ JMS 资源的过程,然后可以通过 Web 服务 SOAP over JMS
绑定的导入或者导出使用它们。这里所提供的资源名称都是一些示例,您可以根据需要对其进行更改。首先,您将了解如何利用队列目的地来使用点到点消息传递模型。随后,在发布/订阅消息传递所需资源部分中,您将了解如何利用主题来使用消息传递模型。有两种方式可以创建
WebSphere MQ 队列管理器和队列:

  • 在 WebSphere MQ Explorer 中创建它们。
  • 使用 WebSphere MQ 命令在命令行窗口中创建它们。

例如,在命令行窗口中,您可以输入 > crtmqm QMGR 来创建队列管理器,可以输入 strmqm
QMGR
来启动该队列管理器。(参见参考资料,其中提供了 WebSphere MQ V6.0
信息中心的链接,该信息中心详细介绍了如何创建所需的对象。)

这个过程需要创建下面的 WebSphere MQ 队列管理器和队列:

  • WebSphere MQ 队列管理器:QMGR
  • WebSphere MQ 队列:QMGR 中的 REQUESTQRESPONSEQ 用于使用 Web 服务 SOAP
    over JMS 绑定的导出
  • WebSphere MQ 队列:QMGR 中的 REQUESTQ1RESPONSEQ1 用于使用 Web 服务
    SOAP over JMS 绑定的导入

对应于这些 WebSphere MQ 资源,您需要在 WebSphere Enterprise Service Bus 或者 WebSphere
Process Server 管理控制台中创建 WebSphere MQ JMS Provider 资源。您必须在 WebSphere MQ JMS
Provider 之下、在节点范围内创建这些资源。使用下面的步骤来创建导出和导入配置所需的资源:

  1. 为导出和导入创建用于请求连接的 WebSphere MQ 队列连接工厂:requestMQCF,它使用 QMGR
  2. 使用 QMGR 为导出和导入创建用于应答连接的 WebSphere MQ JMS 队列连接工厂:replyMQCF
  3. 使用 REQUESTQ 创建一个 WebSphere MQ JMS 队列目的地 requestQ,以便在导出中接收请求消息。
  4. 使用 REQUESTQ1 创建一个 WebSphere MQ JMS 队列目的地
    requestQ1,以便发送来自导入的请求消息。
  5. 在服务器中创建一个侦听器端口:MQListener,它使用 requestMQCFrequestQ,如图
    1 所示。
  6. 在服务器中创建一个侦听器端口:MQListener1,它使用 requestMQCF
    requestQ1,如图 1 所示。

    图 1.
    用户定义的侦听器端口的示例

    用户定义的侦听器端口的示例

  7. 使用 RESPONSEQ 创建一个用于发送响应消息的 WebSphere MQ 队列目的地 replyQ

注意:客户端应用程序使用这个队列作为发送应答的目的地,可以通过 JMS 消息中的 JMSReplyTo Header
来指定。这个目的地并不是针对 Web 服务 SOAP over JMS 导出或者导入绑定而配置的。



回页首

点对点消息传递模型的应用场景

在这个部分中详细描述的点到点场景使用了三个应用程序,如图 2 所示。

图 2.
点到点消息传递模型场景的示例

点到点消息传递模型场景的示例

  • WSMQJMSClient:使用 JavaServer Pages (JSP) sendMessage.jsp 发送 SOAP 消息的
    Web 应用程序。
  • WSMQJMSBackEndService:使用 WebSphere MQ 资源的基于 SOAP over JMS 的 Web
    服务,其实现调用了另一个 Web 服务。
  • WSMQJMSServiceProvider:使用 WebSphere MQ 资源的另一个 Web
    服务提供程序。这些应用程序之间的消息流如下所示:

    1. 客户端向一个已定义的 WebSphere MQ 队列发送 SOAP 消息。
    2. 利用基于 Web 服务 SOAP over JMS 绑定的导出将 SOAP 消息从 WebSphere MQ 队列转换为业务对象。
    3. Java 组件处理该消息,并且通过使用 Web 服务 SOAP over JMS 绑定的导入调用另一个 Web 服务提供程序。
    4. 当请求操作是请求/响应操作时,该 Java 组件通过使用 Web 服务 SOAP over JMS 绑定的导出向已定义的 WebSphere MQ
      队列返回响应消息。

创建使用 SOAP over JMS
导出绑定的应用程序

这个应用程序提供了一个使用 Web 服务 SOAP over JMS 绑定的导出,以及使用 Web 服务接口实现的 Java 组件。这个导出负责接收
JMS 客户端应用程序发送的 SOAP 消息。然后,运行时将这些 SOAP
消息转换为业务对象,以供该应用程序内部的组件使用。本文提供了这个应用程序作为示例,然后对其进行修改,以便使用 WebSphere MQ JMS
资源;对于您自己的使用 Web 服务 SOAP over JMS 绑定的导出,也可以应用相同的操作步骤。让我们对其进行分析:

  1. 创建一个名为 MyLibrary 的库,其中包含一个带有三个函数的 CustomerService 接口,如清单 1
    所示。

    清单 1. CustomerService 接口

                            
    CustomerInfo getCustomerInfo(String id);
    void createCustomer(String id);
    int getQuantity(String id);

  2. 从 WebSphere Integration Developer 中创建一个名为 WSMQJMSServiceProvider
    的模块,该模块包含一个使用 Web 服务 SOAP over JMS 绑定的导出和一个 Java 组件。ProviderSOAPMQJMSExport 包含
    Web 服务 SOAP over JMS 绑定,如图 3 所示。

    图 3.
    WSMQJMSServiceProvider 应用程序

本文转自IBM Developerworks中国

      请点击此处查看全文

 

【上篇】
【下篇】

抱歉!评论已关闭.