Push with Tomcat 8 onClose: ERROR JSR356Endpoint

UI Components for JSF
Post Reply
scinteco
Posts: 1
Joined: 09 Jun 2016, 16:28

05 Jun 2017, 20:40

Hi,

I am using Tomcat 8, Primefaces 6.0.16 and atmosphere 2.4.6.

I have the <p:socket> tag on every page. So leaving a page to another page will cause the "OnClose" in my "PushEndpoint".

After this I get the following error:
The error below is in german meaning - An existing connection was forcibly closed by the remote host

Code: Select all

2017-06-05 20:26:02:334 ERROR JSR356Endpoint 
java.io.IOException: Eine bestehende Verbindung wurde softwaregesteuert
durch den Hostcomputer abgebrochen
	at sun.nio.ch.SocketDispatcher.write0(Native Method)
	at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
	at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
	at sun.nio.ch.IOUtil.write(IOUtil.java:65)
	at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
	at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:124)
	at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:183)
	at org.apache.coyote.http11.upgrade.NioServletOutputStream.doWriteInternal(NioServletOutputStream.java:94)
	at org.apache.coyote.http11.upgrade.NioServletOutputStream.doWrite(NioServletOutputStream.java:61)
	at org.apache.coyote.http11.upgrade.AbstractServletOutputStream.writeInternal(AbstractServletOutputStream.java:165)
	at org.apache.coyote.http11.upgrade.AbstractServletOutputStream.write(AbstractServletOutputStream.java:132)
	at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:98)
	at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:79)
	at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:453)
	at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsRemoteEndpointImplBase.java:341)
	at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:273)
	at org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:600)
	at org.apache.tomcat.websocket.WsSession.onClose(WsSession.java:522)
	at org.apache.tomcat.websocket.WsFrameBase.processDataControl(WsFrameBase.java:348)
	at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:290)
	at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:131)
	at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:71)
	at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListener.onDataAvailable(WsHttpUpgradeHandler.java:185)
	at org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAvailable(AbstractServletInputStream.java:198)
	at org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(AbstractProcessor.java:96)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:661)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1519)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1475)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)

Should I do a resource close as the code shows blow?
What is the correct way to handle such an interruption on page leave?

Code: Select all

@OnClose
public void onClose(RemoteEndpoint r, EventBus eventBus) {
    LOG.info("OnClose {} for user {}.", r, this.username);
    	
    getRunserverService().removeUserRuns(this.username);
    r.resource().close();
}
Thanks for helping.

Best regards
Chris

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: Google [Bot] and 22 guests