spring 不是ActiveMQ Artemis目标异常4

pobjuy32  于 2023-10-15  发布在  Spring
关注(0)|答案(1)|浏览(117)

我有一个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);
...
tzdcorbm

tzdcorbm1#

好吧,我知道错在哪里了,我使用的是另一个jms模板对象,它使用的是默认的Artemis Mq客户端,而不是我通过jndi访问的客户端。

相关问题