【发布时间】:2015-08-19 20:23:21
【问题描述】:
我在 Spring 中编写了一个 WS-Application,它支持将消息创建到 JMS 队列中。 我使用带有 ActiveMQ 的 Apache Tomcat 开发它。一切正常,我的 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>
现在我们尝试将 Web 应用程序移至 Websphere。 JNDI 查找有效,应用程序可以创建工厂,找到队列,但是当我的代码尝试通过 createProducer() 创建生产者时,代码会抛出此异常:
java.lang.ClassCastException: com.sun.proxy.$Proxy28 cannot be cast to com.ibm.mq.jms.MQDestination
我尝试将“javax.jms.Queue”替换为“javax.jms.Destination”,但没有成功。
当我删除代理接口时它正在工作,但我需要在上下文启动时不获取该队列。
【问题讨论】:
标签: java spring jms jndi ibm-mq