如何在JBoss 6.2 EAP中安装WebSphere MQ资源适配器(wmq.jmsra.rar)?

如何在JBoss 6.2 EAP中安装WebSphere MQ资源适配器(wmq.jmsra.rar)?,jboss,connection-pooling,ibm-mq,redhat,message-driven-bean,Jboss,Connection Pooling,Ibm Mq,Redhat,Message Driven Bean,设计:我有一个带有服务器连接通道(EXAMPLE.channel)、请求队列(EXAMPLE.TEST.queue)和应答队列(EXAMPLE.TEST.reply)的队列管理器(EXAMPLE.QM)。我的应用程序将使用消息驱动bean(MDB)侦听EXAMPLE.TEST.QUEUE。当消息到达时,将创建MDB实例并完成业务逻辑(包括查询数据库),然后将应答放在EXAMPLE.TEST.reply队列中。这是一笔交易。如果发生崩溃或任何故障,将捕获异常并回滚所有内容。我想在服务器端为MQ和数

设计:我有一个带有服务器连接通道(EXAMPLE.channel)、请求队列(EXAMPLE.TEST.queue)和应答队列(EXAMPLE.TEST.reply)的队列管理器(EXAMPLE.QM)。我的应用程序将使用消息驱动bean(MDB)侦听EXAMPLE.TEST.QUEUE。当消息到达时,将创建MDB实例并完成业务逻辑(包括查询数据库),然后将应答放在EXAMPLE.TEST.reply队列中。这是一笔交易。如果发生崩溃或任何故障,将捕获异常并回滚所有内容。我想在服务器端为MQ和数据库进行连接池

设置:WebSphere MQ 7.0.1、JBoss 6.2 EAP、Java 1.7.0_21、IBM DB2 9.7

我从MQ_安装路径\java\lib\jca获得了wmq.jmsra.rar 我还得到了com.ibm.mqetclient.jar

根据,为了支持XATransaction,我使用命令jar-uf wmq.jmsra.rar com.ibm.mqetclient.jar重新打包wmq.jmsra.rar以包括com.ibm.mqetclient.jar

您可以跳过下一段,查看下面提供的xml片段以获得相同的信息。

这样做之后,我使用管理控制台将wmq.jmsra.rar手动放到JBoss部署目录中。然后,我继续在资源适配器下的概要视图中添加。我将Archive设置为wmq.jmsra.rar,将TX设置为XATransaction。然后,我将属性设置为以下值:logWriterEnabled-true、maxConnections-10、reconnectionRetryCount-5、traceLevel-6、traceEnabled-true、reconnectionRetryInterval-300000和connectionConcurrency-5。这样做之后,我添加了一个连接定义。我将其命名为WMQ_ConnectionFactory、JNDI-java:jboss/WMQ_ConnectionFactory和连接类-com.ibm.mq.connector.outbound.managedconnectionfactorympl。我将属性设置如下:端口-1414、主机名-localhost、通道-EXAMPLE.channel、传输类型-BINDINGS\u THEN\u CLIENT、failIfQuiesce-true和队列管理器-EXAMPLE.QM。然后我继续添加了2个管理对象。第一个我命名为EXAMPLE_REQ_Queue,JNDI-java:jboss/EXAMPLE_REQ_Queue,类名为com.ibm.mq.connector.outbound.MQQueueProxy。我有以下属性:useJNDI-true、readAheadClosePolicy-ALL、startTimeout-10000、destination-EXAMPLE.TEST.REQUEST和destinationType-javax.jms.Queue。我命名为EXAMPLE_REP_Queue的第二个管理对象JNDI-java:jboss/EXAMPLE_REP-Queue,类名为com.ibm.mq.connector.outbound.MQQueueProxy。我为它提供了以下属性:failifQuiesce-true、baseQueueManagerName-EXAMPLE.QM、persistence-HIGH、encoding-NNN、baseQueueName-EXAMPLE.TEST.REPLY、targetClient-MQ和expiry

下面是standalone.xml文件的一个片段

<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
        <resource-adapters>
            <resource-adapter id="wmq.jmsra.rar">
                <archive>
                    wmq.jmsra.rar
                </archive>
                <transaction-support>XATransaction</transaction-support>
                <config-property name="logWriterEnabled">
                    true
                </config-property>
                <config-property name="maxConnections">
                    10
                </config-property>
                <config-property name="traceEnabled">
                    true
                </config-property>
                <config-property name="traceLevel">
                    6
                </config-property>
                <config-property name="reconnectionRetryCount">
                    5
                </config-property>
                <config-property name="reconnectionRetryInterval">
                    300000
                </config-property>
                <config-property name="connectionConcurrency">
                    5
                </config-property>
                <connection-definitions>
                    <connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:jboss/WMQ_ConnectionFacotry" enabled="true" pool-name="WMQ_ConnectionFactory">
                        <config-property name="port">
                            1414
                        </config-property>
                        <config-property name="hostName">
                            localhost
                        </config-property>
                        <config-property name="channel">
                            EXAMPLE.CHANNEL
                        </config-property>
                        <config-property name="failIfQuiesce">
                            true
                        </config-property>
                        <config-property name="transportType">
                            BINDINGS_THEN_CLIENT
                        </config-property>
                        <config-property name="queueManager">
                            EXAMPLE.QM
                        </config-property>
                        <security>
                            <application/>
                        </security>
                        <validation>
                            <background-validation>false</background-validation>
                        </validation>
                    </connection-definition>
                </connection-definitions>
                <admin-objects>
                    <admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/EXAMPLE_REQ_Queue" enabled="true" use-java-context="false" pool-name="EXAMPLE_REQ_Queue">
                        <config-property name="useJNDI">
                            true
                        </config-property>
                        <config-property name="startTimeout">
                            10000
                        </config-property>
                        <config-property name="destination">
                            EXAMPLE.TEST.REQUEST
                        </config-property>
                        <config-property name="readAheadClosePolicy">
                            ALL
                        </config-property>
                    </admin-object>
                    <admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/EXAMPLE_REP_Queue" enabled="true" use-java-context="false" pool-name="EXAMPLE_REP_Queue">
                        <config-property name="failIfQuiesce">
                            true
                        </config-property>
                        <config-property name="baseQueueManagerName">
                            EXAMPLE.QM
                        </config-property>
                        <config-property name="persistence">
                            HIGH
                        </config-property>
                        <config-property name="encoding">
                            NNN
                        </config-property>
                        <config-property name="baseQueueName">
                            EXAMPLE.TEST.REPLY
                        </config-property>
                        <config-property name="targetClient">
                            MQ
                        </config-property>
                        <config-property name="expiry">
                            300000
                        </config-property>
                    </admin-object>
                </admin-objects>
            </resource-adapter>
        </resource-adapters>
    </subsystem>

,RedhatJBossDocumentation-JCA架构一章,以及Oracle消息驱动Beans JavaEE6教程


我的代表只允许我发布2个链接,所以最后两个教程没有链接非常感谢您的帮助。

我在将MQ RAR部署到JBoss时遇到了一些稍微不同的问题,但概述的解决方案和过程应该适合您。要查看的特定文件有。这些文件是iron jacamar(jboss作为JCA提供者)描述符

  • ra.xml:WMQ RAR描述符
  • ironjacamar.xml:定义WMQ连接参数和管理对象

我最终删除了导致异常弹出的所有属性。我试图设置的属性是用于入站通信的,结果发现这并不是设置它们的合适位置。相反,这些应该在消息驱动Bean(MDB)的部署描述符中设置。该文件名为ejb-jar.xml。内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
     version="3.0"
>
<enterprise-beans>
     <message-driven>
          <ejb-name>MyMDB</ejb-name>
          <ejb-class>com.foo.MyMDB</ejb-class>
          <messaging-type>javax.jms.MessageListener</messaging-type>
          <transaction-type>Container</transaction-type>
          <activation-config>
               <activation-config-property>
                    <activation-config-property-name>
                         destinationType
                    </activation-config-property-name>
                    <activation-config-property-value>
                         javax.jms.Queue
                    </activation-config-property-value>
               </activation-config-property>
               <activation-config-property>
                    <activation-config-property-name>
                         destination
                    </activation-config-property-name>
                    <activation-config-property-value>
                         EXAMPLE.TEST.REQUEST
                    </activation-config-property-value>
                </activation-config-property>
                <!--SET OTHER PROPERTIES-->
          </activation-config>
     </message-driven>
</enterprise-beans>
</ejb-jar>

MyMDB
com.foo.MyMDB
javax.jms.MessageListener
容器
目的型
javax.jms.Queue
目的地
示例.TEST.REQUEST

希望这能有所帮助。

我投票支持帮助该代表。我没有答案,但我知道现代客户端不需要mqetclient.jar。几年前,IBM在所有客户机中启用了事务性。要么您有一个需要mqetclient.jar的旧的、有缺陷的、不受支持的客户机,要么您将旧的jar与现代客户机混合使用。可能希望通过下载新版本的客户端来消除这一复合错误。转到并查找名为
MQC*
的。您可以获得v7.x和v8.0客户端。所有这些都将与后台QMgr合作。感谢您的投票和建议@T.Rob。我被限制使用上面提到的版本,但是如果以后的WMQ RA是向后兼容的,那么我将继续尝试。