部署消息驱动的 Bean 以连接至 IBM MQ
可以使用消息驱动的 Bean (MDB) 来连接至 IBM MQ。
过程
- 配置 MDB 功能部件:
通过在 server.xml 文件中配置 jmsMdb-3.2 和 wmqJmsClient-2.0 功能部件,在 Liberty 服务器中启用 MDB 支持。如果要执行 JNDI 查找,那么还必须将 jndi-1.0 功能部件与其他两个功能部件一起添加。
<featureManager> <feature>jmsMdb-3.2</feature> <feature>wmqJmsClient-2.0</feature> <feature>jndi-1.0</feature> </featureManager>
配置 wmqJmsClient-2.0 功能部件使用户能够定义必需的 JMS 资源,并且使 MDB 能够与消息传递引擎进行交互。
注: wmqJmsClient-2.0 功能部件支持 JMS 1.1 和 JMS 2.0 规范的功能部件。但是,如果只想使用符合 JMS 1.1 规范的功能部件,那么可选择使用 wmqJmsClient-1.1 功能部件。 - 可以通过在 server.xml 文件中添加以下项目来指定 IBM MQ 资源适配器的位置:
其中,value 属性指定 IBM MQ 资源适配器文件的绝对路径 wmq.jmsra.rar。<variable name="wmqJmsClient.rar.location" value="/path/to/wmq/rar/wmq.jmsra.rar"/>
有关受支持的版本和获取 wmq.jmsra.rar 文件的详细信息,请参阅 IBM MQ 技术说明 1633761。从 Fix Central 获取 wmq.jmsra.rar 文件并进行安装。
- 配置使用 JMS 资源适配器的 JCA 激活规范,以便 MDB 充当特定 JMS 目标的侦听器。下面采用不同的方法来配置 MDB 以与消息传递引擎进行交互。
- 使用激活规范属性来配置 MDB。可以在 server.xml 文件中定义此属性,以便 MDB 可以使用此属性来侦听特定 JMS 目标。
<jmsActivationSpec id="JMSSample/JMSSampleMDB"> <properties.wmqJms destinationRef="jndi/MDBQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/> </jmsActivationSpec> <jmsQueue id="jndi/MDBQ" jndiName="jndi/MDBQ"> <properties.wmqJms baseQueueName="MYQ" baseQueueManagerName="myQM"/> </jmsQueue>
<destinationRef> 是指 <jmsQueue> 的标识。如果未提到 <jmsQueue> 中的标识,那么 <destinationRef> 必须指向 <jmsQueue> 的 <jndiName>。
注: 标识值的格式必须为 application name/module name/bean name,其中:- application name 是已部署的应用程序的名称(例如,JMSSample)。仅当将 Bean 打包在 EAR 文件中时,应用程序名称才适用。应用程序名称缺省设置为 EAR 文件的基本名称,不带文件扩展名,除非 application.xml 部署描述符指定了应用程序名称。
- module name 是用来打包该 Bean 的模块的名称。在独立 ejb-jar 文件或者 WAR 文件中,<module-name> 缺省设置为模块的基本名称,移除了所有文件扩展名。在 WAR 文件中,<module-name> 缺省设置为模块的路径名,并且移除了所有文件扩展名,但是包括了所有目录名称。可以使用 ejb-jar.xml(对于 ejb-jar 文件)或者 web.xml(对于 WAR 文件)的 module-name 元素来覆盖缺省 <module-name>。
- bean name 是企业 Bean 的 ejb-name。对于通过注释定义的企业 Bean,Bean 名称缺省设置为会话 Bean 类的非限定名称,除非在 MessageDriven 注释的 name() 属性的内容中指定。对于通过 ejb-jar.xml 定义的企业 bean,在 <ejb-name> 部署描述符元素中指定了 bean 名称。
- 使用注释以及 server.xml 文件中定义的激活规范属性。
Liberty 支持为 MDB 定义注释,可以将注释与 server.xml 文件中定义的激活规范属性配合使用。为了使用注释,请如前一步骤中提到的那样首先定义激活规范属性。对于每个 MDB,用户可以如以下示例中所示定义注释:
@MessageDriven( name = "JMSSampleMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "userName", propertyValue = "user1"), @ActivationConfigProperty(propertyName = "password", propertyValue = "user1pwd"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "jndi_INPUT_Q") } ) public class JMSSampleMDB implements MessageListener{ @TransactionAttribute(value = TransactionAttributeType.REQUIRED) public void onMessage(Message message) { } }
- 使用 EJB 绑定文件 (ibm-ejb-jar-bnd.xml)。
您还可以使用此绑定文件来定义 MDB 在连接至消息传递引擎时所需要的资源信息。当您使用 EJB 绑定文件时,激活规范属性标识不一定需要采用步骤 1 中所提到的 application name/module name/bean name 格式。
在 server.xml 中添加激活规范属性信息。<jmsActivationSpec id="PriceChangeAS"> <properties.wmqJms destinationRef="jms/TriggerQ" transportType="CLIENT" queueManager="myQM" hostName="myHost" port="1414"/> </jmsActivationSpec> <jmsQueue id="jms/TriggerQ" jndiName="jms/TriggerQ"> <properties.wmqJms baseQueueName="Q1"/> </jmsQueue>
在 ibm-ejb-jar-bnd.xml 文件中添加以下 MDB 绑定信息。<ejb-jar-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_1.xsd" (http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_1.xsd%27) version="1.1"> <message-driven name="PriceChangeMDBBean"> <jca-adapter activation-spec-binding-name="PriceChangeAS" destination-binding-name="jms/TriggerQ" /> </message-driven> </ejb-jar-bnd>
注: 使用 EJB 绑定文件时,ibm-ejb-jar-bnd.xml 文件中的 activation-spec-binding-name 属性必须指向 server.xml 文件中所指定的激活规范属性标识值。
- 使用激活规范属性来配置 MDB。

文件名:twlp_dep_msg_mdbwmq.html