Spring 4 에서 지원하는 @MessageMapping 어노테이션으로 구현한 WebSocket 서버 프로그램에서 Exception in thread "clientInboundChannel-5" java.util.ConcurrentModificationException 와 같은 익셉션 발생 시.
스프링 프레임워크 버전을 확인. 4.0.5 에서 해결된 문제로 이하 버전으로 개발했다면 프레임워크 업데이트로 해결 가능.
https://jira.spring.io/browse/SPR-11755
[code]
Exception in thread "clientInboundChannel-5" java.util.ConcurrentModificationException
at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:711)
at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:734)
at org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry$DestinationCache.updateAfterNewSubscription(DefaultSubscriptionRegistry.java:179)
at org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry.addSubscriptionInternal(DefaultSubscriptionRegistry.java:91)
at org.springframework.messaging.simp.broker.AbstractSubscriptionRegistry.registerSubscription(AbstractSubscriptionRegistry.java:65)
at org.springframework.messaging.simp.broker.SimpleBrokerMessageHandler.handleMessageInternal(SimpleBrokerMessageHandler.java:126)
at org.springframework.messaging.simp.broker.AbstractBrokerMessageHandler.handleMessage(AbstractBrokerMessageHandler.java:171)
at org.springframework.messaging.support.ExecutorSubscribableChannel$1.run(ExecutorSubscribableChannel.java:70)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "clientInboundChannel-4" java.util.ConcurrentModificationException
at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:711)
at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:734)
at org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry$DestinationCache.updateAfterRemovedSession(DefaultSubscriptionRegistry.java:214)
at org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry.unregisterAllSubscriptions(DefaultSubscriptionRegistry.java:112)
at org.springframework.messaging.simp.broker.SimpleBrokerMessageHandler.handleMessageInternal(SimpleBrokerMessageHandler.java:136)
at org.springframework.messaging.simp.broker.AbstractBrokerMessageHandler.handleMessage(AbstractBrokerMessageHandler.java:171)
at org.springframework.messaging.support.ExecutorSubscribableChannel$1.run(ExecutorSubscribableChannel.java:70)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
[/code]