Java JNDI与Spring和webspehremq的JMS集成

Java JNDI与Spring和webspehremq的JMS集成,java,spring,jms,jndi,ibm-mq,Java,Spring,Jms,Jndi,Ibm Mq,我在Spring中编写了一个WS-Application,它支持将消息创建到JMS队列中。 我使用带有ActiveMQ的ApacheTomcat开发了它。这里一切正常,我有我的JNDI资源可以派生连接工厂并将消息发送到队列中: <jee:jndi-lookup id="jndiJmsQueueConnectionFactory" jndi-name="${jms.factory.jndiName}" proxy-interface="javax.jms.Connection

我在Spring中编写了一个WS-Application,它支持将消息创建到JMS队列中。 我使用带有ActiveMQ的ApacheTomcat开发了它。这里一切正常,我有我的JNDI资源可以派生连接工厂并将消息发送到队列中:

<jee:jndi-lookup id="jndiJmsQueueConnectionFactory"
        jndi-name="${jms.factory.jndiName}" proxy-interface="javax.jms.ConnectionFactory"
        lookup-on-startup="false">
 </jee:jndi-lookup>

<jee:jndi-lookup id="jndiSendQueue" jndi-name="${jms.myQueue.jndiName}"
        proxy-interface="javax.jms.Queue" lookup-on-startup="false"></jee:jndi-lookup>

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref ="jmsQueueConnectionFactory"></property>
        <property name="sessionAcknowledgeModeName" value="AUTO_ACKNOWLEDGE"/>

</bean>
我试图用“javax.jms.Destination”替换“javax.jms.Queue”,但没有成功


当我删除代理接口时,它正在工作,但我需要在启动上下文时不获取该队列。

当使用Spring时,它将查找到的目标包装在Spring动态代理中。WebSphere MQ JMS提供程序需要其目标的实现,但未收到目标,因此出现异常。您可能能够绕过在查找的目的地上调用toString,然后在会话对象上调用createDestination,得到结果。

有确切的问题。这很有效(使用createSession)。当依靠Spring进行JNDI查找队列时,注入的类是class com.sun.proxy.$Proxy135,当调用createSession时,我能够获得class com.ibm.mq.jms.MQQueue。我知道我的队列名,所以不需要我做toString。
java.lang.ClassCastException: com.sun.proxy.$Proxy28 cannot be cast to com.ibm.mq.jms.MQDestination