我有一个Java应用程序,在Jboss服务器7.0上运行。我正在尝试将其与IBM mq适配器集成我已经部署了wmq.jmsra.rar适配器并按如下方式配置它:
<subsystem xmlns="urn:jboss:domain:resource-adapters:5.0">
<resource-adapters>
<resource-adapter id="wmq.jmsra.rar">
<archive>
wmq.jmsra.rar
</archive>
<transaction-support>NoTransaction</transaction-support>
<connection-definitions>
<connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:jboss/exported/jms/MQConnectionFactory" tracking="false" pool-name="mq-my-app">
<config-property name="hostName">127.0.0.1</config-property>
<config-property name="port">1414</config-property>
<config-property name="channel">SYSTEM.ADMIN.SVRCONN</config-property>
<config-property name="transportType">CLIENT</config-property>
<config-property name="queueManager">MQ1</config-property>
<config-property name="username">admin</config-property>
<config-property name="password">passw0rd</config-property>
</connection-definition>
</connection-definitions>
<admin-objects>
<admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/exported/jms/MQRequestQueue" pool-name="queue-req">
<config-property name="baseQueueManagerName">MQ1</config-property>
<config-property name="baseQueueName">DEV.QUEUE.1</config-property>
</admin-object>
<admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/exported/jms/MQResponseQueue" pool-name="queue-res">
<config-property name="baseQueueManagerName">MQ1</config-property>
<config-property name="baseQueueName">DEV.QUEUE.2</config-property>
</admin-object>
</admin-objects>
</resource-adapter>
</resource-adapters>
</subsystem>
我的IBM服务器在Docker上运行,并通过本地主机地址访问。
在我的java应用程序与Spring上下文中,我在应用程序启动时通过jndi访问mq队列,当我试图发送消息时,我得到以下错误:
"java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bankAdapterImpl': Invocation of init method failed; nested exception is org.springframework.jms.InvalidDestinationException: Not an ActiveMQ Artemis Destination:com.ibm.mq.connector.outbound.MQQueueProxy@4d1be475; nested exception is javax.jms.InvalidDestinationException: Not an ActiveMQ Artemis Destination:com.ibm.mq.connector.outbound.MQQueueProxy@4d1be475
编辑:我使用jndi访问的方式
public static final String CONNECTION_FACTORY_NAME = "jboss/exported/jms/MQConnectionFactory";
public static final String REQUEST_QUEUE_NAME = "jboss/exported/jms/MQRequestQueue";
...
Context jndiContext = new InitialContext();
return (Destination) jndiContext.lookup(REQUEST_QUEUE_NAME);
...
1条答案
按热度按时间tzdcorbm1#
好吧,我知道错在哪里了,我使用的是另一个jms模板对象,它使用的是默认的Artemis Mq客户端,而不是我通过jndi访问的客户端。