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

标签 jboss connection-pooling ibm-mq redhat message-driven-bean

设计:我有一个带有服务器连接 channel (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_INSTALLATION_PATH\java\lib\jca 获得了 wmq.jmsra.rar
我还得到了 com.ibm.mqetclient.jar

根据 Redhat installation guide为了支持 XATransactions,我使用命令 jar -uf wmq.jmsra.rar com.ibm.mqetclient.jar 重新打包了 wmq.jmsra.rar 以包含 com.ibm.mqetclient.jar

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

这样做之后,我使用管理控制台手动将 wmq.jmsra.rar 放到 JBoss 部署目录中。然后我继续在资源适配器下的配置文件 View 中添加。我将存档设置为 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.ManagedConnectionFactoryImpl。我将属性设置如下:端口 - 1414、主机名 - localhost、 channel -EXAMPLE.CHANNEL、transportType - BINDINGS_THEN_CLIENT、failIfQuiesce - true 和 queueManager -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,持久性 - HIGH,编码 - NNN,baseQueueName -EXAMPLE.TEST.REPLY,targetClient - MQ,到期时间 300000。

这是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>

问题:
我得到以下异常:

15:54:53,325 ERROR [org.jboss.msc.service.fail] (ResourceAdapterDeploymentService Thread Pool -- 1) MSC000001: Failed to start service jboss.ra.deployment."wmq.jmsra.rar": org.jboss.msc.service.StartException in service jboss.ra.deployment."wmq.jmsra.rar": JBAS010446: Failed to start RA deployment [wmq.jmsra] at org.jboss.as.connector.services.resourceadapters.deployment.AbstractResourceAdapterDeploymentService$1.run(AbstractResourceAdapterDeploymentService.java:279) [jboss-as-connector-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21] at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21] at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final-redhat-1.jar:2.1.1.Final-redhat-1] Caused by: org.jboss.jca.deployers.common.DeployException: IJ020060: Unable to inject: com.ibm.mq.connector.outbound.MQQueueProxy property: destination value: EXAMPLE.TEST.REQUEST at org.jboss.jca.deployers.common.AbstractResourceAdapterDeployer.initAdminObject(AbstractResourceAdapterDeployer.java:907) [ironjacamar-deployers-common-1.0.23.Final-redhat-1.jar:1.0.23.Final-redhat-1] at org.jboss.jca.deployers.common.AbstractResourceAdapterDeployer.createObjectsAndInjectValue(AbstractResourceAdapterDeployer.java:2382) [ironjacamar-deployers-common-1.0.23.Final-redhat-1.jar:1.0.23.Final-redhat-1] at org.jboss.as.connector.services.resourceadapters.deployment.ResourceAdapterXmlDeploymentService$AS7RaXmlDeployer.doDeploy(ResourceAdapterXmlDeploymentService.java:185) [jboss-as-connector-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14] at org.jboss.as.connector.services.resourceadapters.deployment.ResourceAdapterXmlDeploymentService.start(ResourceAdapterXmlDeploymentService.java:106) [jboss-as-connector-7.3.0.Final-redhat-14.jar:7.3.0.Final-redhat-14] at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1] at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA-redhat-1.jar:1.0.4.GA-redhat-1] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21] at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21] 15:54:53,343 INFO [org.jboss.as.server] (Controller Boot Thread) JBAS018559: Deployed "wmq.jmsra.rar" (runtime-name : "wmq.jmsra.rar") 15:54:53,344 INFO [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Service status report JBAS014777: Services which failed to start: service jboss.ra.deployment."wmq.jmsra.rar": org.jboss.msc.service.StartException in service jboss.ra.deployment."wmq.jmsra.rar": JBAS010446: Failed to start RA deployment [wmq.jmsra]



我猜主要是引起:org.jboss.jca.deployers.common.DeployException:IJ020060:无法注入(inject):com.ibm.mq.connector.outbound.MQQueueProxy 属性:目标值:EXAMPLE.TEST.REQUEST 在此之前,我遇到了同样的错误,而是说destinationType 值:javax.jms.Queue。然后我继续删除该属性并再次尝试,现在我收到了这个错误。我不确定下一步该做什么。

我一直在关注的教程:
IBM - The WebSphere MQ resource adapter , Redhat Jboss Documentation - JCA Architecture Chapter, 和 Oracle - Message Driven Beans Java EE6 教程

我的代表只允许我发布 2 个链接,因此最后两个教程没有链接。 任何帮助将不胜感激。

最佳答案

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

  • ra.xml : WMQ RAR 描述符
  • Ironjacamar.xml :定义 WMQ 连接参数和管理对象。
  • 关于jboss - 如何在 JBoss 6.2 EAP 中安装 WebSphere MQ 资源适配器 (wmq.jmsra.rar)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30904631/

    相关文章:

    ssl - 没有用于 MQ channel 的 SSL 或 TLS 证书(从终端运行 - Windows 10)

    java - new MQConnectionFactory() 在 JBoss 中抛出 NullPointerException

    eclipse - JBoss 服务器没有得到更改

    java - 如何登录JBoss控制台

    jboss - 如何禁用 EAP 6 中的模块?

    oracle - 当连接出现问题时,有什么方法可以让 JBoss 连接池重新连接到 Oracle?

    java - 无需java代码构建war文件

    jdbc - 汇集 Hive JDBC 连接的最佳实践是什么

    javascript - 使用node杀死所有休眠的mysql池连接

    spring-boot - 在 SpringBoot 中,@JmsListener 如何以及何时被调用?