如何在JBoss 6.2 EAP中安装WebSphere MQ资源适配器(wmq.jmsra.rar)?
设计:我有一个带有服务器连接通道(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文件的一个片段如何在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和数
<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是向后兼容的,那么我将继续尝试。