WebSphere Process Server V7.0 中的消息绑定增强,第 1 部分 : 开发与 WebSphere MQ 和其他消息提供程序交互的集成组件

WebSphere® Application Server V7 引入了 WebSphere MQ JMS J2C 资源适配器,用来连接 WebSphere MQ。这一引入带动了 Process Server V7 中消息绑定的修改。本文介绍了发生在 Process Server 的消息绑定导入和导出组件中的一些增强。

Najwa Riyaz, 软件工程师, IBM

= Najwa Riyaz 照片Najwa Riyaz 在 India Software Labs (ISL) 的 WebSphere Service Integration Bus Test 团队工作。在此之前,她的工作是 WebSphere Application Server 一些组件的测试人员和 Administration Console 自动化开发人员。她在 IBM 有 7 年的工作经验。她通过了 WebSphere Application Server System Administrator V6、Sun Java Programmer V5 和 IBM Six Sigma Green Belt(质量认证)的认证。



Phani Madgula, 软件开发人员, IBM

Phani Madgula 在 India Software Labs (ISL) 从事 WebSphere Process Server 支持工作。他在 IBM 工作了 6 年,曾经在多个产品团队工作过,包括 WebSphere Application Server Community Edition、WebSphere Business Integration Adapters 和 DB2。他有开发 JEE 应用程序、产品支持和数据库管理方面的工作经历。他是经过认证的 Oracle9i 专业人员。


developerWorks 投稿作者

2011 年 7 月 11 日

简介

WebSphere Application Sever V7.0 引入了 WebSphere MQ JMS J2C 资源适配器(RA),用来连接 WebSphere MQ。RA 是由 WebSphere MQ 软件所提供的,与 WebSphere Application Server V7.0 打包在一起。这要求针对 WebSphere Application Server V7.0 开发应用程序,以便使用 RA 与 WebSphere MQ 交互。因此,WebSphere Process Server V7.0(以下简称 Process Server)使用这个 WebSphere Application Server 设施,Process Server 也针对其消息绑定组件利用了 RA 提供的这个工具。RA 的引入为 Process Server 提供的消息绑定带来了重大变化。

集成开发人员在开发使用消息绑定连接到 WebSphere MQ 的应用程序时需要意识到这些改变。消息绑定在内部使用 RA 与 WebSphere MQ 进行交互。RA 引发的一个重大改变是在侦听器端口上激活规范的使用。Process Server 管理员需要知道可用于管理消息端点的工具,通过消息绑定组件控制来自 WebSphere MQ 的消息流,特别是使用事件序列功能时。

Process Server V7.0 为消息绑定引入了动态响应目的地。因此,这里没有 CALLBACK 队列存储请求/响应操作的相关信息。

在 Process Server V7.0 中,当 MQ/MQJMS 绑定中有运行时异常时,会生成失败事件。这些失败事件的类型为 MQ。除了现有事件类型,也介绍了该事件类型。

本文通过样例应用程序和图表简要介绍了上述 Process Server V7.0 消息绑定中的改变。

本文可分为以下几部分:

先决条件

  • 您需要对 J2EE 概念有一个很好的理解。
  • 您需要在使用 WebSphere Integration Developer 和 WebSphere MQ 开发集成应用程序方面有良好的实践经验。

系统需求

对于本文中介绍的练习,需要以下环境:

  • WebSphere Integration Developer V7.0.0.3 或者含有最新修复包
  • WebSphere MQ V7.0.1.3

WebSphere MQ RA 简介

从 WebSphere Application Server V7.0 起,应用程序就必须使用 RA 连接到 WebSphere MQ。WebSphere Application Server 早期版本有一个 WebSphere MQ JMS 提供程序,用于同 WebSphere MQ 交互。WebSphere MQ JMS 提供一系列客户端库,位于 <WPS62_HOME>/lib/WMQ/java/lib 目录之下。

然而,根据行业标准,WebSphere MQ 决定开发 RA 进行与 WebSphere MQ 的交互。RA 位于 <WPS70_HOME>/InstalledConnectors/wmq.jmsra.rar 目录之下。

RA 的升级是由 WebSphere Application Server V7.0 修复包维护的。RA 版本是通过以下方式确定的:

  1. 打开 <WPS70_HOME>/InstalledConnectors/wmq.jmsra.rar/META-INF/ra.xml。观察 <resourceadapter-version> 元素。版本在该元素中提供:
    <resourceadapter-version>7.0.1.3-k701-103-100812</resourceadapter-version>
  2. 使用以下内容创建 mqversion.jy,并使用 wsadmin 命令执行它。确保执行命令时服务器是启动的。
    wmqInfoMBeansUnsplit = AdminControl.queryNames("WebSphere:type=WMQInfo,*")
    wmqInfoMBeansSplit = AdminUtilities.convertToList(wmqInfoMBeansUnsplit)
    for wmqInfoMBean in wmqInfoMBeansSplit: print wmqInfoMBean; 
    print AdminControl.invoke(wmqInfoMBean, 'getInfo', '')

    输出如图 1 所示。

    图 1. WebSphere MQ JCA RA 版本
    WebSphere MQ JCA RA 版本

在 WebSphere MQ 中使用 JMS 风格元素时,MQJMS 绑定是最适合的。它提取了一些细节,工作方式更像 Process Server 中的 JMS 绑定类型,包括它的数据处理程序风格、功能选择器等等。对于单纯的 WebSphere MQ 交互和消息,选择使用 MQ 绑定。在本文中,我们使用术语 “消息绑定” 表示 Process Server 提供的所有消息绑定(MQ、MQJMS、JMS、以及通用绑定)。有差异时,将会使用具体绑定名称。

Process Server 提供 MQ/MQJMS 绑定来集成 SCA 组件和 WebSphere MQ。在 Process Server V7.0 之前,WebSphere MQ JMS 提供程序被 MQ/MQJMS 绑定用于与 WebSphere MQ 交互。对于 MQJMS 绑定,该提供程序提供一个称为侦听器端口的设备进行入站交互。MQ 绑定仅用于支持客户端 传输类型来连接到 MQ。该绑定 传输不被 MQ 绑定所支持。然而,MQJMS 绑定同时支持客户端 以及绑定 传输模式来连接到 WebSphere MQ。当 WebSphere MQ Queue Manager 与客户端在同一个机器上运行时,使用绑定传输模式。当队列管理器在本地运行时,使用 “进程-进程” 通信来提高性能。侦听器端口需要通过使用管理控制台配置,如图 2 所示。

图 2. Process Server V6.2 中的侦听器端口
Process Server V6.2 中的侦听器端口

侦听器端口已被配置,含有连接工厂 JNDI 名和 WebSphere MQ JMS 目的地 JNDI 名,如图 3 所示。如果在配置的目的地中有一个消息的话,侦听器将该消息推入配置来接收该消息的端点。管理控制台提供该选项来启动和停止侦听器端口。当应用程序启动时,您可以将侦听器端口的初始状态设置为活动的或静止的。

图 3. Process Server V6.2 中的侦听器端口配置
Process Server V6.2 中的侦听器端口配置
图 4. WebSphere Integration Developer V6.2 中的侦听器端口配置
WebSphere Integration Developer V6.2 中的侦听器端口配置

WebSphere MQ V7.0 提供的 RA 使得入站和出站交互都变得很简单。Process Server V7.0 中的 MQ/MQJMS 绑定使用这个 RA 与 WebSphere MQ 进行交互。以下更改是由 RA 为消息绑定引入的:

  • J2C 激活规范而非 MQJMS 绑定上侦听器端口的使用。
  • MQ 绑定引入绑定 传输来连接到 WebSpere MQ。
  • RA 通过 MQ JMS API 提供设备来支持 MQ 本地头部。

因此,RA 的引入有助于更紧密地聚合 JMS、MQ 和 MQJMS 绑定。

图 5 说明了 Process Server V7.0 如何连接到 WebSphere MQ Queue Manager。

图 5. 通过 RA 连接到 Queue Manager
通过 RA 连接到 Queue Manager

遗留应用程序(针对 Process Server 早期版本开发的应用程序)继续使用侦听器端口。

  1. 从本教程下载部分提供的 apps.zip 文件中下载 OrderService.zip,并将其导入到 WebSphere Integration Developer V7.0.0.3。可以观察到 MQ Export 使用绑定 传输,而 MQJMS Export 使用客户端 传输。在 WebSphere MQ 中创建如下对象,如图 6 所示。
    图 6. WebSphere MQ 对象
    WebSphere MQ 对象
  2. 也使用 CHANNEL1 创建一个服务器连接通道。注意,您必须创建一个 mqauth 认证别名,使用适当的认证通过管理控制台连接到测试服务器。在 MQJMS 导出绑定的 Security Attributes > Authentication Properties 部分提供认证别名。单击 MQJMS Export 然后单击 Properties 选项卡打开该部分。在 WebSphere Integration Developer 中启动测试服务器,然后部署 OrderService 模块。
  3. 打开管理控制台,然后在 Navigation 树中单击 Resources > JMS > Activation specifications。观察为导出而创建的下列激活规范,如图 7 所示。
    图 7. 为 MQ 和 MQJMS Exports 创建的激活规范
    为 MQ 和 MQJMS Exports 创建的激活规范
  4. 单击每一个激活规范,并观察属性。
  5. 在管理控制台上,在导航树上单击 Resources > JMS > Queues。这将打开为 OrderService 模块创建的队列。单击 OrderService.OrderServiceExport_MQBinding_MQ_RECEIVE_D 队列。在右手边单击 Custom properties。如图 8 所示,这个用户属性是为 MQ 绑定创建的 JMS 队列而设定的。
    图 8. MQ 队列上的自定义属性集合
    MQ 队列上的自定义属性集合

如果您对 MQ 绑定使用预配置资源,上述属性必须被设置为目的地。


管理时间序列的消息端点

当一个使用时间序列的应用程序被部署到一个集群时,一个集群成员中只有一个消息端点被激活。如果所有集群成员上的端点都被激活,任何成员都可以从队列中捡起该消息。消息处理的顺序是没有保证的。在早期 Process Server 版本中,侦听器端口提供了一种方法来将所有集群成员上端点的初始状态设置为禁止的。一个应用程序启动之后,您就可以选择一个具体的群集成员来激活端点。

使用激活规范替换 Process Server V7.0 中的侦听器端口,需要类似功能。对于 Process Server V7.0 Fix Pack 3,关于消息端点的激活和失活的问题已得到了修复,以下选择将有助于设置消息端点状态:

  1. 您可以在设置激活规范上的 WAS_EndpointInitialState 属性来配置消息端点的初始状态。要为一个激活规范设置自定义属性 WAS_EndpointInitialState,输入如下值:
    1. 对于 Name,指定为 WAS_EndpointInitialState
    2. 对于 Value,指定以下选项其中之一:

      ACTIVE:如果消息驱动 bean 与 JMS 目的地一连接消息消耗就马上开始,指定一个值 ACTIVE。

      INACTIVE:如果消息消耗没有开始,直至您使用 wsadmin 工具或者管理控制台来激活消息驱动 bean 的消息消耗。

      对于 Type,选择 String

    图 9 说明了如何设置 MQ 和 MQJMS 绑定。

    图 9. 在 MQ 和 MQJMS 激活规范上设置自定义属性
    在 MQ 和 MQJMS 激活规范上设置自定义属性
  2. 在管理控制台导航树上单击 Applications > SCA modules > OrderService,并展开 Exports > Binding。单击 MQMQJMS。如图 10 所示。
    图 10. 模块中的 MQ 和 MQJMS 绑定
    模块中的 MQ 和 MQJMS 绑定

    单击 MQJMS 绑定,然后单击 Runtime 选项卡。您可以观察到端点的状态。您可以通过这些面板恢复或暂停端点。如图 11 所示。

    图 11. 通过 SCA 控制面板控制端点状态
    通过 SCA 控制面板控制端点状态

    您可以在 OrderService 模块激活规范中将上述属性配置为 INACTIVE,然后重启模块,将观察到对应消息端点的初始状态已暂停。

  3. 您可以使用这个 技术说明 中提供的步骤,选择暂停或恢复消息端点。

对于上述设备,可在使用事件序列安装应用程序之后启动应用程序之前,将端点的初始状态设置为 INACTIVE,您可以使用管理控制台(上述第 2 步)或者 wsadmin 脚本(上述第 3 步),来将一个选中的消息端点的状态设置为 ACTIVE。


使用消息相关性的动态响应队列

  1. 下载 OrderService1.zip 并将其导入到 WebSphere Integration Developer。打开 OrderServiceClient 模块的组装图表并单击 MQJMSImport。在 Properties 选项卡,单击 Message Configuration 链接。对于 Response 相关性计划方案,引入了一个新的选项 “Use a temporary dynamic destination for receiving responses”。这个选项允许重建一个临时队列来存储通过导入发送的每个请求的响应。这个选项对于 JMS 和 Generic JMS 绑定也是可用的。为允许 ReplyToDestination 属性在处理请求之后发送响应,目标服务是必须的。对于短暂的服务,我们建议使用该选项。如图 12 所示。
    图 12. 响应相关性的临时动态队列
    响应相关性的临时动态队列
  2. 在应用程序上部署,在 WebSphere Integration Developer 中测试 OrderServiceClientComp。您可以看到请求/响应操作没有创建任何 CALLBACK 队列来存储相关性信息。您可以检查它是否使用管理控制台上嵌入的 SIBExplorer。当请求被发送到目标服务时,一个临时队列被动态创建,并被设置为 ReplyToDestination 头部,目标服务处理该请求并发送响应到指定队列。

MQ/MQJMS 绑定中的失败事件管理

从 Process Server V7.0 开始,在处理 MQ 消息的同时如果有服务运行时异常,这个新的 MQ 失败事件类型被创建来生成失败事件。您必须为队列管理程序创建一个恰当的连接工厂,并在 MQJMS Import 和 Export 绑定的 Failed Event Reply Connection Factory 设置中提供它。该设置在 MQJMS 导出的 Request 选项卡,和 MQJMS 导入的 Response 选项卡中提供。如图 13 所示。

图 13. 失败事件回复连接工厂
失败事件回复连接工

结束语

本文介绍了为 WebSphere Process Server V7.0 中的消息绑定提供的增强。WebSphere MQ 资源适配器给消息绑定带来了新的改进。本文讨论了管理消息端点的各种可用选项。本文也说明了在激活规范中提供的自定义属性,来控制消息端点状态。动态临时目的地缓解了对 CALLBACK 队列的需求,减少了系统集成总线上队列的数量。MQ 失败事件类型的引入,使您在处理 MQ 消息时可从错误经验中轻松地恢复选项。


下载

描述名字大小
代码样例apps.zip26KB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=715522
ArticleTitle=WebSphere Process Server V7.0 中的消息绑定增强,第 1 部分 : 开发与 WebSphere MQ 和其他消息提供程序交互的集成组件
publish-date=07112011