使用activeMQ+;Spring:javax.jms.InvalidClientIndexception:客户端:已连接

使用activeMQ+;Spring:javax.jms.InvalidClientIndexception:客户端:已连接,java,spring,activemq,publish-subscribe,Java,Spring,Activemq,Publish Subscribe,我正在尝试使用activeMQ和Spring3.1的集成来配置具有持久订阅的主题。我的jms上下文是: 在我的JUnit测试中工作得非常完美,我不会成为任何例外。但是,当我在我的web应用程序上尝试它(使用jetty)时,尽管我正确地接收到了消息,但仍然会遇到以下异常: javax.jms.InvalidClientIDException: Broker: localhost - Client: subscribtionDurableName already connected from x

我正在尝试使用activeMQ和Spring3.1的集成来配置具有持久订阅的主题。我的jms上下文是:


在我的JUnit测试中工作得非常完美,我不会成为任何例外。但是,当我在我的web应用程序上尝试它(使用jetty)时,尽管我正确地接收到了消息,但仍然会遇到以下异常:

javax.jms.InvalidClientIDException: Broker: localhost - Client: subscribtionDurableName already connected from xxxx
    at org.apache.activemq.broker.region.RegionBroker.addConnection(RegionBroker.java:243) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:92) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.advisory.AdvisoryBroker.addConnection(AdvisoryBroker.java:90) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:92) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:92) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.MutableBrokerFilter.addConnection(MutableBrokerFilter.java:97) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:733) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.jmx.ManagedTransportConnection.processAddConnection(ManagedTransportConnection.java:79) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:149) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196) ~[activemq-core-5.7.0.jar:5.7.0]
    at java.lang.Thread.run(Unknown Source) ~[na:1.6.0_45]
12:53:54.195 [ActiveMQ InactivityMonitor ReadCheckTimer] TRACE o.a.a.t.AbstractInactivityMonitor - A receive is in progress
12:53:54.195 [ActiveMQ InactivityMonitor WriteCheckTimer] TRACE o.a.a.t.AbstractInactivityMonitor - xxxx message sent since last write check, resetting flag
12:53:54.208 [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] WARN  o.s.j.l.DefaultMessageListenerContainer - Could not refresh JMS Connection for destination 'Topic' - retrying in 5000 ms. Cause: Broker: localhost - Client: subscribtionDurableName  already connected from xxx
javax.jms.InvalidClientIDException: Broker: localhost - Client: subscribtionDurableName  already connected from xxx
    at org.apache.activemq.broker.region.RegionBroker.addConnection(RegionBroker.java:243) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:92) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.advisory.AdvisoryBroker.addConnection(AdvisoryBroker.java:90) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:92) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:92) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.MutableBrokerFilter.addConnection(MutableBrokerFilter.java:97) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:733) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.jmx.ManagedTransportConnection.processAddConnection(ManagedTransportConnection.java:79) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:149) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214) ~[activemq-core-5.7.0.jar:5.7.0]
    at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196) ~[activemq-core-5.7.0.jar:5.7.0]
    at java.lang.Thread.run(Unknown Source) ~[na:1.6.0_45]
我试过:


同样的结果


有人能帮我吗?Thanx

问题是web加载了两次上下文(使用ContextLoaderListener和DispatcherSerlvet)。我更改了web.xml中的配置并解决了问题:)