我正在尝试使当前的Spring应用程序与Websphere 7默认的JMS提供程序一起工作。我创建了一个总线并为其分配了一个队列,还有一个SIB QueueConnectionFactory,一个SIB队列和一个激活规范,并将其与SIB队列相关联。我确信已为应用程序服务器启动了消息引擎。
所以我的web.xml引用了JNDI资源
<!-- Question: should I define Activation Specification here as well as a resource ? -->
<resource-ref>
<description>JNDI JMS Conn Factory </description>
<res-ref-name>jms/ConnectionFactory</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>JNDI JMS Queue </description>
<res-ref-name>jms/queue/QueueOrderUpdate</res-ref-name>
<res-type>javax.jms.Queue</res-type>
<res-auth>Container</res-auth>
</resource-ref>
当我启动应用程序时,它给了我:
Could not refresh JMS Connection for destination 'ORDER.QUEUE' - retrying in 5000 ms. Cause:
CWSIA0025E: The method setExceptionListener is not permitted in this container.
javax.jms.IllegalStateException: CWSIA0025E: The method setExceptionListener is not permitted
in this container.
ORDER.QUEUE
是应用程序从WS引用队列的内容:
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsCachingConnectionFactory" />
<!-- same queue as jms/queue/QueueOrderUpdate -->
<property name="defaultDestinationName" value="ORDER.QUEUE" />
<property name="messageConverter" ref="orderMessageConverter"/>
</bean>
那应该是
<!-- I think this should be the queue defined for the bus but not the SIB queue right? -->
<jee:jndi-lookup id="jmsQueue" jndi-name="jms/queue/QueueOrderUpdate">
<jee:environment>
java.naming.provider.url=${java.naming.provider.url}
java.naming.factory.initial=${java.naming.factory.initial}
java.naming.factory.url.pkgs=${java.naming.factory.url.pkgs}
</jee:environment>
</jee:jndi-lookup>
它应该是我在Websphere中定义的队列:
以下是我的问题:
Activation Specification
适配器而不是侦听器端口?我发现没有侦听器端口绑定到当前服务器,请参见以下屏幕截图:
答案 0 :(得分:1)
通过Spring JMS for WAS 7查看我的旧项目我对web.xml
中的JNDI一无所知。
关于此事的我的春季配置如下:
<bean id="connectionFactory" class="org.springframework.jms.connection.DelegatingConnectionFactory">
<property name="targetConnectionFactory">
<jee:jndi-lookup jndi-name="jms/StpConnectionFactory"/>
</property>
<property name="shouldStopConnections" value="true"/>
</bean>
<jee:jndi-lookup id="orderQueue" jndi-name="jms/queue/QueueOrderUpdate"/>
我想知道我刚用Default JMS Provider
代表ConnectionFactory
以及Destination
s。