本文共 15785 字,大约阅读时间需要 52 分钟。
, WebSphere 消息传递开发, IBM
, 首席开发人员, IBM , 首席测试师, IBM使用 WebSphere MQ 消息传递提供程序(以下简称“MQ 消息传递提供程序”)的 Java EE 应用程序通过 JMS API 进行消息传递(请参阅),而 WebSphere MQ 还支持广泛选择其他编程 API 和环境。这意味着 Java EE 应用程序可以使用 MQ 消息传递提供程序与以下应用程序通信:CICS 应用程序、在 z/OS® 上运行的后端应用程序和用各种语言编写的其他现有应用程序,这里仅提供几个示例(图 1)。
通过 MQ 消息传递提供程序,部署使用本地或全局事务的 Java EE 应用程序可以将 WebSphere MQ 作为事务资源。例如,可以异步通知购买管理应用程序:来自 WebSphere MQ 的“填写帐户”消息已经到达。为了响应该消息,该应用程序可能更新库存数据库,如果客户的信用不够,则向货品计价应用程序发送另一条 WebSphere MQ 消息(图 2)。
当然,此示例应用程序最好能够执行这些操作,这样所有资源可以作为单个全局事务进行更新。事实上,使用 MQ 消息传递提供程序可以做到这一点。换句话说,您可以在单个全局事务范围中协调 WebSphere MQ 和其他事务资源,如 IBM DB2® 数据库。
要结合使用 MQ 消息传递程序和 Java EE 应用程序,必须定义一个或多个受管理对象。受管理对象保存在应用服务器的 Java Naming and Directory Interface (JNDI) 命名空间中,用于通过 JMS API 将应用程序与在 WebSphere MQ 中定义的资源相关联。由于 WebSphere MQ 消息传递提供程序受管理对象保存在 JNDI 中,因此可以从有权访问 JNDI 命名空间的任何流程访问它们。
WebSphere Application Server V7 中的 MQ 消息传递提供程序直接支持三种受管理对象。它们分别是:
此外,可以将消息侦听器端口配置为使用 MQ 消息传递提供程序。在接下来的各个部分中,将详细讨论 MQ 消息传递提供程序受管理对象。
|
WebSphere Application Server V7 中的更新 MQ 消息传递提供程序支持基于 J2EE™ Connector Architecture (JCA) 1.5 兼容资源适配器。JCA 1.5 规范的一部分定义独立于供应商的方法,此方法可以将入站消息提交到在 Java EE 兼容应用服务器(如 WebSphere Application Server)中运行的消息驱动的 Bean (MDB)。用于配置和设置入站消息交付的构造称为激活规范。因此,在 WebSphere Application Server V7 中,现在可以创建 MQ 消息传递提供程序激活规范来管理在 WebSphere Application Server 中运行的 MDB 与 WebSphere MQ 中的目的地之间的关系。
MQ 消息传递提供程序激活规范现在是将消息从 WebSphere MQ 目的地提交到在 WebSphere Application Server 中运行的 MDB 的首选机制。激活规范取代了现有 WebSphere Application Server 消息侦听器端口支持的使用,该侦听器端口支持在 WebSphere Application Server V7 中就已经弃用。不过,仍可以使用消息侦听器端口通过 MQ 消息传递提供程序将消息提交到 MDB——甚至可以同时配置使用 MQ 消息传递提供程序资源的消息侦听器端口和 MQ 消息传递提供程序激活规范。
优先使用激活规范(而不是消息侦听器端口)将消息提交到 MDB 的原因有多个方面。与消息侦听器端口相比,普通的激活规范(特别是 MQ 消息传递提供程序激活规范)具有以下优点:
图 3 显示了如何使用 MQ 消息传递提供程序激活规范将 WebSphere MQ 队列管理器目的地链接到在 WebSphere Application Server 中运行的 MDB。通过 MQ 消息传递提供程序激活规范将消息从客户端提交到 MDB 的流程采取以下方式:
配置 MQ 消息传递提供程序激活规范非常类似于配置 MQ 消息传递提供程序连接工厂。可以使用 WebSphere Application Server 管理控制台或 wsadmin 命令行工具对它们进行配置。要使用管理控制台创建 MQ 消息传递提供程序激活规范,请执行以下操作:
图 4 对这些关键控件的位置进行了批注。
创建了基本 MQ 消息传递提供程序激活规范之后,可以使用六种不同的配置面板进一步对其进行配置。要进一步配置 MQ 消息传递提供程序激活规范,请执行以下操作:
第一个面板可用于修改 MQ 消息传递提供程序激活规范的传输模式和目的地,以及其他常用的配置设置。此页面的右侧提供指向其他配置面板的链接:
在 z/OS 平台上使用 MQ 消息传递提供程序激活规范时,可以提供若干其他功能。这些功能是为充分利用 z/OS 的唯一可伸缩性和工作负载管理功能而设计的,它包括尽可能减少队列管理器端消息争用的拆分进程激活规范实现,以及对激活规范的 z/OS 工作负载管理的支持。
有关此功能以及如何启用和配置该功能的详细信息,请参阅。
将消息侦听器端口迁移到激活规范
早期迭代 MQ 消息传递提供程序的用户使用了消息侦听器端口将消息从 WebSphere MQ 消息传递提供程序目的地提交到在 WebSphere Application Server 中运行的 MDB。迁移到 WebSphere Application Server V7 时,可以改为使用 MQ 消息传递提供程序激活规范。为使迁移到激活规范的任务变得更容易,已经提供了若干工具。
从消息侦听器端口进行迁移时,第一个任务是创建新的 MQ 消息传递提供程序激活规范。可以通过从头创建激活规范来完成此任务,也可以使用工具基于特定消息侦听器端口配置的设置创建 WebSphere MQ 消息传递提供程序激活规范来完成此任务。
您可以从 wsadmin 命令行工具使用 migrateWMQMLP 命令来执行迁移。在部分中可以看到此命令的示例调用。
此外,还可以使用 WebSphere Application Server 管理控制台进行迁移。要对现有消息侦听器端口完成此任务,请执行以下操作:
迁移消息侦听器端口配置后,应配置相应的 MDB,才能使用新的 MQ 消息传递提供程序激活规范。当任何 MDB 都不再引用消息侦听器端口时,可以通过管理控制台或 wsadmin 将其安全删除。
|
WebSphere Application Server V7 中的 MQ 消息传递提供程序继续对连接工厂提供完全支持,其方式与以前版本中的方式大致相同。不过,除支持某些功能外,还添加了许多增强功能,使创建和配置连接工厂变得更加容易。本部分将概述这些增强功能。
现在,随着连接工厂创建向导的引入,在 WebSphere Application Server V7 中可以更方便地管理使用管理控制台创建 MQ 消息传递提供程序连接工厂的流程。该向导通过提示您输入最常见的配置属性信息来提供创建基本连接工厂配置的简单方法。然后,可以使用增强的 MQ 消息传递提供程序连接工厂面板定制新的连接工厂,以满足您的特定需求。
启动此向导的方法与启动大致相同,不同的是应选择需要创建的连接工厂的类型。
在 WebSphere Application Server V7 中添加了对许多重要 MQ 消息传递提供程序连接工厂配置参数的完全支持。其中最重要的支持也许是 WebSphere Application Server 中,以及对创建基于 CCDT 的消息传递提供程序连接工厂的完全支持。消息传递提供程序连接工厂现在还公开支持。
WebSphere Application Server V7 中明显更改了 MQ 消息传递提供程序连接工厂的管理控制台面板的结构和布局。通过将许多不同面板上各个部分中的相关属性组合在一起,此重构使配置 MQ 消息传递提供程序连接工厂变得更加容易:
|
安全套接字层 (SSL) 协议在远程服务器流程或端点之间提供安全通信。SSL 安全可用于建立来自端点的入站通信和指向端点的出站通信。要建立安全通信,必须为端点指定证书和 SSL 配置。
在以前的 WebSphere Application Server 版本中,指向 WebSphere MQ 的基于 SSL 的连接依赖于定义的 JVM 自定义属性(主要用于基于客户端容器的环境)或节点的缺省 SSL 配置,来指定要使用的密钥存储库和信任存储库,并为每个连接工厂指定 SSL 密码套件。
WebSphere Application Server V7 在指定 SSL 配置数据方式上包含若干重要更改:
有关 WebSphere MQ 消息传递中 SSL 配置的详细信息,请参阅。
|
在 WebSphere Application Server V7 中,现在有两种方法指定 MQ 消息传递提供程序连接工厂或激活规范所需的信息,以便它们可以连接到 WebSphere MQ 队列管理器。第一种方法需要您手动输入所有的信息。第二种方法是向 MQ 消息传递提供程序资源提供指向客户端通道定义表 (CCDT) 的统一资源定位符 (URL)。
CCDT 是一种二进制文件,它包含有关如何创建指向一个或多个队列管理器的客户端连接通道的信息。该文件包含的信息有目标队列管理器的主机名、端口和名称,以及更高级的配置信息,如应该使用的 SSL 属性。通过 WebSphere MQ 队列管理器或使用 提供的独立工具可以生成 CCDT。
使用 CCDT 创建 MQ 消息传递提供程序资源可以提供以下好处:
有关使用 CCDT 配置 MQ 消息传递提供程序资源的详细信息,请参阅。
|
通道出口是在 WebSphere MQ 通道生命周期中的定义点运行的用户代码。通道出口有许多潜在的用途,其中包括审核、安全、压缩、转换等。WebSphere Application Server V7 中的 MQ 消息传递提供程序提供对基于 Java 的通道出口的完全支持。
在以前的 WebSphere Application Server 版本中,必须使用自定义属性配置通道出口。在 WebSphere Application Server V7 中,可以使用管理控制台、管理命令在连接工厂和激活规范上配置通道出口,或者在 CCDT 条目中指定它们。
要使用通道出口,MQ 消息传递提供程序连接工厂或激活规范必须具有传输类型“客户端”或“绑定然后客户端”。这是因为使用基于客户端通道的连接连接到 WebSphere MQ 队列管理器或队列共享组时,只能使用通道出口程序。如果选择“绑定然后客户端”传输模式,则仅在绑定模式连接失败时,才驱动通道出口。
MQ 消息传递提供程序支持以下三种不同类型的通道出口:
|
企业应用程序使用 MQ 消息传递提供程序连接到队列管理器时,共有两个主要方法来进行此连接。一种选择是使用基于 TCP/IP 的网络连接;此方法称为客户端模式连接。另一种选择是使用交叉内存进程间通信,通常将此方法称为绑定模式连接。尽管连接机制的选择对企业应用程序是透明的,但是名为传输模式的此信息将形成 MQ 消息传递提供程序连接工厂和激活规范配置的一部分。
在 MQ 队列管理器与 WebSphere Application Server 运行于同一节点的配置中,使用绑定模式可提供性能优势。当队列管理器和应用服务器由网络连接的不同计算机承载时,将需要客户端模式连接。当使用新的“绑定然后客户端”模式时,将首先尝试指向队列管理器的绑定模式连接,如果无法实现此连接,则建立客户端模式连接。
创建或修改 WebSphere MQ 消息传递提供程序激活规范或连接工厂时,可以选择“绑定然后客户端”传输模式。
|
在 WebSphere Application Server V7 中启用新的道通压缩支持时,消息内容通过网络传输时将被压缩。此压缩适用于跨应用服务器中运行的企业应用程序与它们连接的队列管理器之间的链接传输的数据。
如果使用通道压缩,则从应用程序角度而言对消息数据的操作是透明的;在 WebSphere MQ 排列消息数据之前会自动对其解压缩。这使得通道压缩的使用对连接到队列管理器的其他 WebSphere MQ 应用程序同样透明。图 9 显示了压缩和解压缩消息数据的关键点。
使用通道压缩有助于提高在应用服务器和队列管理器之间传输消息的速度。这是因为压缩在消息中发送或接收的数据可以减少传输该消息所需的网络带宽。
在某些情况下,使用通道压缩可以减少为基于 SSL 的连接加密数据花费的处理器时间。这是因为加密数据花费的时间通常取决于加密的数据量,而不是实际的数据内容。因此,如果您的数据压缩完好,您会发现处理器压缩数据、然后加密该数据所花费的时间明显少于加密所有非压缩数据所花费的时间。
WebSphere Application Server V7 支持两种类型的压缩:
可以通过 WebSphere Application Server 管理控制台或 wsadmin 命令行接口启用通道压缩。要使用管理控制台启用通道压缩(图 10),请执行以下操作:
|
在 V7 之前的版本中,可以在 WebSphere Application Server 中通过管理控制台或使用 wsadmin 工具直接操作 WebSphere Application Server 配置模型来配置 MQ 消息传递提供程序资源。
通过 wsadmin 直接与 WebSphere Application Server 配置模型进行互操作有一定的缺陷,容易出现错误。WebSphere Application Server V7 中引入了一组新的管理命令,可以通过这些命令来创建、修改、删除和显示 MQ 消息传递提供程序资源,还引入了相关功能,如将消息侦听器端口迁移到 MQ 消息传递提供程序激活规范。
新命令包括若干参数,可以对基础配置文档执行适当的操作。和直接与配置模型进行互操作相比,使用这些命令的一些主要好处有:
所有的 MQ 消息传递提供程序管理命令都是 WMQAdminCommands 命令组的一部分,可以使用 Jython 或 JACL 运行它们。通过将以下 Jython 命令输入到 wsadmin 提示符可以获取所有不同命令的摘要信息:
wsadmin>print AdminTask.help('WMQAdminCommands') |
WMQAdminCommands 命令组由六个命令集组成,以下各部分将描述这些命令集。创建 MQ 消息传递提供程序资源时,一般情况下,管理名称和 JNDI 名称在创建它的范围中必须是唯一的,否则会产生错误消息。
为操作 WebSphere MQ 消息传递提供程序激活规范,共提供了以下五个命令:
wsadmin>node = AdminConfig.list('Node')wsadmin>AdminTask.createWMQActivationSpec(node, ["-name MyActivationSpec-jndiName 'jms/MyActivationSpec' -destinationJndiName 'jms/MyQueue' -destinationType javax.jms.Queue -ccdtUrl 'file://ccdt.tab' -ccdtQmgrName QM12"]) |
wsadmin>AdminTask.listWMQActivationSpecs(node)'MyActivationSpec(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec_1219672912125)MyOtherActivationSpec(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec_1219673212812)' |
wsadmin>AdminTask.showWMQActivationSpec('MyActivationSpec(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec_1219672912125)') |
wsadmin>AdminTask.modifyWMQActivationSpec('MyActivationSpec(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec_1219672912125)', ["-destinationJndiName 'jms/AnotherWMQQueue'"]) |
wsadmin>AdminTask.deleteWMQActivationSpec('MyActivationSpec(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CActivationSpec_1219672912125)') |
为操作 MQ 消息传递提供程序连接工厂,还提供了另一个由五个命令组成的集合。这些命令适用于所有三种类型的连接工厂:统一、队列和主题。
wsadmin>AdminTask.createWMQConnectionFactory(node, ["-name MyCF -jndiName 'jms/MyCF' -type CF -rcvExit com.example.ReceiveExit -rcvExitInitData 'debug=true' -sendExit com.example.SendExit -sendExitInitData 'compression=normal'"]) |
wsadmin>AdminTask.modifyWMQConnectionFactory('MyCF(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#MQConnectionFactory_1219674863640)', ["-rcvExit '' -rcvExitInitData '' -sendExit '' -sendExitInitData ''"]) |
wsadmin>AdminTask.showWMQConnectionFactory('MyCF(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#MQConnectionFactory_1219674863640)') |
为创建和操作 MQ 消息传递提供程序队列和主题,共提供了两个命令集。可以使用 createWMQTopic 和 createWMQQueue 命令创建相关范围的消息传递提供程序队列或主题。例如,以下命令代码可在服务器范围创建 MQ 消息传递提供程序队列:
wsadmin>server = AdminConfig.list('Server')wsadmin>AdminTask.createWMQQueue(server, ["-name MyQueue -jndiName 'jms/MyQueue' -queueName q1.in -useNativeEncoding false -integerEncoding Reversed -decimalEncoding Reversed -floatingPointEncoding IEEEReversed"]) |
类似地,以下命令代码可创建服务器范围的 WebSphere MQ 消息传递提供程序主题:
wsadmin>AdminTask.createWMQTopic(server, ["-name MyTopic -jndiName 'jms/MyTopic' -topicName sport/football -useNativeEncoding false -integerEncoding Reversed -decimalEncoding Reversed -floatingPointEncoding IEEEReversed"]) |
wsadmin>AdminTask.showWMQTopic('MyTopic(cells/L3A3316Node04Cell/nodes/L3A3316Node05/servers/server1|resources.xml#MQTopic_1219676983984)') |
wsadmin>AdminTask.modifyWMQQueue('MyQueue(cells/L3A3316Node04Cell/nodes/L3A3316Node05/servers/server1|resources.xml#MQQueue_1219676256312)', ["-useNativeEncoding true"]) |
wsadmin>AdminTask.showWMQQueue('MyQueue(cells/L3A3316Node04Cell/nodes/L3A3316Node05/servers/server1|resources.xml#MQQueue_1219676256312)') |
manageWMQ 命令具有三种用途:
调用 manageWMQ 命令时,需要提供安装的资源适配器(服务器、节点或计算单元范围)的对象名称。通过查看相关的 J2CResourceAdapter 对象可以获取此信息。此示例显示了使用通配符查找这些对象的方式:
wsadmin>AdminConfig.list('J2CResourceAdapter', '*WebSphere MQ*') |
下面的示例说明了如何在从上一示例返回的节点范围获取安装的 MQ 消息传递提供程序的版本信息:
wsadmin>AdminTask.manageWMQ("WebSphere MQ Resource Adapter(cells/L3A3316Node04Cell/nodes/L3A3316Node05|resources.xml#J2CResourceAdapter_1216206449734)", ["-query"]) |
使用 nativePath 选项指定本机路径信息时,服务器范围的路径信息将覆盖节点和计算单元范围的路径信息。类似地,设置节点范围的本机路径信息会覆盖在计算单元范围指定的配置。使用此选项时提供的路径必须指定包含本机库的目录的完整路径。例如,以下命令代码可在计算单元范围指定本机路径信息:
wsadmin>AdminTask.manageWMQ("WebSphere MQ Resource Adapter(cells/L3A3316Node04Cell|resources.xml#J2CResourceAdapter_1216206454984)", ["-nativePath 'c://Program Files//IBM//WebSphere MQ//Java//lib//'"]) |
下面是使用 enableInbound 选项的示例。使用此选项时,传入的 J2CResourceAdapter 对象必须在服务范围,否则会产生错误:
wsadmin>AdminTask.manageWMQ("WebSphere MQ Resource Adapter(cells/L3A3316Node04Cell/nodes/L3A3316Node05/servers/server1|resources.xml#J2CResourceAdapter_1216206454812)", ["-enableInbound"]) |
migrateWMQMLP 命令
可以使用 migrateWMQMLP 命令将使用 MQ 消息传递提供程序资源的消息侦听器端口迁移到 MQ 消息传递提供程序激活规范。例如,以下命令代码可查找和选择特定的消息侦听器端口,然后将其转换为服务器范围的 MQ 消息传递提供程序激活规范:
wsadmin>lp1 = AdminConfig.list('ListenerPort')wsadmin>AdminTask.migrateWMQMLP(lp1, ["-asName as1 -asJNDIName jms/as1 -asScope server"]) |
|
本文简要概述了在 WebSphere Application Server V7 的 WebSphere MQ 消息传递提供程序中的新功能,并提供了描述如何使用这些功能的示例。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-610839/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14789789/viewspace-610839/