Spring SingleConnectionFactory-引发ConcurrentModificationException
我使用多个SimpleMessageListenerContainer,它们都使用来自单个ConnectionFactory的相同连接。它们都在SingleConnectionFactory的AggregatedExceptionListener中注册。因为,当SingleConnectionFactory的JMS连接断开时,需要通知所有SMLC清除其会话和使用者,并从SCF获取新连接 但是,当SingleConnectionFactory的AggregatedExceptionListener在其this.delegate上迭代并尝试调用listener.OneException时,会发生此错误。例如,我的所有SMLC都是委托 这在Spring类中似乎是一个bug。它也许应该复制委托,然后在复制的列表上迭代,这样如果列表被修改,它就不会引发ConcurrentModificationException 如果您有任何关于解决方案的想法,我们将不胜感激Spring SingleConnectionFactory-引发ConcurrentModificationException,spring,spring-jms,Spring,Spring Jms,我使用多个SimpleMessageListenerContainer,它们都使用来自单个ConnectionFactory的相同连接。它们都在SingleConnectionFactory的AggregatedExceptionListener中注册。因为,当SingleConnectionFactory的JMS连接断开时,需要通知所有SMLC清除其会话和使用者,并从SCF获取新连接 但是,当SingleConnectionFactory的AggregatedExceptionListener
13:30:28,201 ERROR [SimpleMessageListenerContainer] Encountered non-recoverable JMSException
javax.jms.JMSException: java.io.EOFException
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54)
at org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1998)
at org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:2017)
at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101)
at org.apache.activemq.transport.ResponseCorrelator.onException(ResponseCorrelator.java:126)
at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101)
at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101)
at org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:160)
at org.apache.activemq.transport.AbstractInactivityMonitor.onException(AbstractInactivityMonitor.java:314)
at org.apache.activemq.transport.TransportSupport.onException(TransportSupport.java:96)
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:200)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.EOFException
at java.io.DataInputStream.readInt(Unknown Source)
at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:258)
at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:221)
at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:213)
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
... 1 more
Exception in thread "ActiveMQ Connection Executor: tcp://localhost/127.0.0.1:9002@58017" java.util.ConcurrentModificationException
at java.util.LinkedHashMap$LinkedHashIterator.nextNode(Unknown Source)
at java.util.LinkedHashMap$LinkedKeyIterator.next(Unknown Source)
at org.springframework.jms.connection.SingleConnectionFactory$AggregatedExceptionListener.onException(SingleConnectionFactory.java:670)
at org.apache.activemq.ActiveMQConnection$5.run(ActiveMQConnection.java:2005)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
正如您所怀疑的,这是一个bug,请参阅 它应该在即将发布的版本4.1.8和4.2.2中修复,计划于2015年10月15日发布