部署消息驱动的 Bean 以连接至 IBM MQ

可以使用消息驱动的 Bean (MDB) 来连接至 IBM MQ

过程

  1. 配置 MDB 功能部件:

    通过在 server.xml 文件中配置 jmsMdb-3.2wmqJmsClient-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 功能部件。
  2. 可以通过在 server.xml 文件中添加以下项目来指定 IBM MQ 资源适配器的位置:
    <variable name="wmqJmsClient.rar.location" value="/path/to/wmq/rar/wmq.jmsra.rar"/>
    其中,value 属性指定 IBM MQ 资源适配器文件的绝对路径 wmq.jmsra.rar

    有关受支持的版本和获取 wmq.jmsra.rar 文件的详细信息,请参阅 IBM MQ 技术说明 1633761。从 Fix Central 获取 wmq.jmsra.rar 文件并进行安装。

  3. 配置使用 JMS 资源适配器的 JCA 激活规范,以便 MDB 充当特定 JMS 目标的侦听器。下面采用不同的方法来配置 MDB 以与消息传递引擎进行交互。
    1. 使用激活规范属性来配置 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 名称。
    2. 使用注释以及 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) {
      	 }
      }
    3. 使用 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 文件中所指定的激活规范属性标识值。

用于指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_dep_msg_mdbwmq
文件名:twlp_dep_msg_mdbwmq.html