Websocket in eap 6.3.1 has issues
bergler Oct 29, 2014 11:14 AMI'm unsing the websocket implementation of eap 6.3.x for my application. Everything seems fine as long as there is no load on the servlet, but if I try to send lots of data from the server to the client, I see something like
java.lang.IllegalStateException: JBWEB008529: The remote endpoint was in state [BINARY_FULL_WRITING] which is an invalid state for called method at org.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.checkState(WsRemoteEndpointImplBase.java:1052) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4]
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.binaryStart(WsRemoteEndpointImplBase.java:1005) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendBytesByCompletion(WsRemoteEndpointImplBase.java:128) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendObjectByCompletion(WsRemoteEndpointImplBase.java:518) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendObjectByFuture(WsRemoteEndpointImplBase.java:481) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendObject(WsRemoteEndpointImplBase.java:469) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendObject(WsRemoteEndpointBasic.java:74) [jbossweb-7.4.8.Final-redhat-4.jar:7.4.8.Final-redhat-4] at kam.csync.webapp.InvokerCallable.send(InvokerCallable.java:211) [classes:] at kam.csync.webapp.InvokerCallable.call(InvokerCallable.java:71) [classes:] at kam.csync.webapp.InvokerCallable.call(InvokerCallable.java:35) [classes:] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_51] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51] at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
I tried several variations of available APIs (Basic, Async, Fragmented, byte[], Object, ..) but the result always comes down to some exception like the excepption above.
I got some success by doing retries with the send API, but eventually I get invalid websocket frames sent by the server.
Anybody having the same problem?
Solution? Workarounds? Any help appreciated
/roland