0 Replies Latest reply on Oct 29, 2014 11:14 AM by bergler

    Websocket in eap 6.3.1 has issues

    bergler

      I'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