Java WebSockets: удаленная конечная точка была в состоянии [TEXT_FULL_WRITING]

Я пытаюсь реализовать какое-либо приложение на основе веб-сокетов, которое будет довольно интенсивно общаться с клиентами JS.

Код для отправки сообщения довольно примитивен:

synchronized (session) {
    if (session.isOpen()) {
        session.getBasicRemote().sendText(message);
    }
}

Для редких отправлений это работает просто отлично, но когда несколько потоков пытаются отправить несколько сообщений одним и тем же сеансом (сокетом), выдается следующее исключение (обратите внимание, что это не проблема многопоточности, поскольку блок кода синхронизируется сессией):

java.lang.IllegalStateException: The remote endpoint was in state [TEXT_FULL_WRITING] which is an invalid state for called method
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.checkState(WsRemoteEndpointImplBase.java:1015)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.textStart(WsRemoteEndpointImplBase.java:978)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:161)
at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:37)

Google не богата подобными исключениями на данный момент, и после нескольких часов работы над этой проблемой все равно нет решения.

Java 7.0.21, протестирована на Tomcat 7.0.52 и Tomcat 8.0.3.

Любой ответ высоко ценится! Заранее спасибо.

ОБНОВЛЕНИЕ 3/11/2014: я протестировал свое приложение на Jetty 9.1, и это исключение не произошло. Я предполагаю, что это ошибка реализации Tomcat.

Ответы на вопрос(2)

Ваш ответ на вопрос