2
我在Spring中編寫了一個WS-Application,它支持創建消息到JMS隊列中。 我使用帶有ActiveMQ的Apache Tomcat開發它。寄託都工作正常,在這裏,我有我的JNDI資源可以推導出連接工廠和消息發送到隊列:JMS與Spring和Webspehre集成的JNDI MQ
<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「,但沒有奏效。
當我刪除代理接口它正在工作,但我需要該隊列不會在上下文啓動時獲取。
有確切的問題。這工作(使用createSession)。當依靠Spring來執行JNDI查找Queue時,注入的類是com.sun.proxy類。$ Proxy135,當調用createSession時,我可以獲得類com.ibm.mq.jms.MQQueue。我新增了我的隊列名稱,因此我不需要執行toString。 – AR3Y35