If during websocket communication an error is encountered [1] and then you shuttdown the server, NPE exception occurs during that shutdown [2] [1] example of error with APR connector (http-/127.0.0.1:8080-1) Error message received: java.io.EOFException at org.apache.catalina.core.StandardWrapperValve.async(StandardWrapperValve.java:555) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardWrapperValve.event(StandardWrapperValve.java:350) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardContextValve.event(StandardContextValve.java:171) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.valves.ValveBase.event(ValveBase.java:185) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardHostValve.event(StandardHostValve.java:247) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.valves.ValveBase.event(ValveBase.java:185) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardEngineValve.event(StandardEngineValve.java:121) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.connector.CoyoteAdapter.event(CoyoteAdapter.java:228) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.coyote.http11.Http11AprProcessor.event(Http11AprProcessor.java:763) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.event(Http11AprProtocol.java:565) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:2050) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51] example of error with NIO2 connector (http-/127.0.0.1:8080-36) Error message received: java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) [rt.jar:1.7.0_51] at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) [rt.jar:1.7.0_51] at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) [rt.jar:1.7.0_51] at sun.nio.ch.IOUtil.read(IOUtil.java:192) [rt.jar:1.7.0_51] at sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead(UnixAsynchronousSocketChannelImpl.java:387) [rt.jar:1.7.0_51] at sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:191) [rt.jar:1.7.0_51] at sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213) [rt.jar:1.7.0_51] at sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:293) [rt.jar:1.7.0_51] at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51] [2] 12:09:31,278 INFO [org.jboss.web] (ServerService Thread Pool -- 54) JBAS018224: Unregister web context: /jboss-as-autobahn 12:09:51,316 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/jboss-as-autobahn]] (ServerService Thread Pool -- 54) JBWEB000306: Exception sending context destroyed event to listener instance of class org.apache.tomcat.websocket.server.WsContextListener: java.lang.NullPointerException at org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:105) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doClose(WsRemoteEndpointImplServer.java:144) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.close(WsRemoteEndpointImplBase.java:589) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:500) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:410) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.close(WsSession.java:386) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsWebSocketContainer.destroy(WsWebSocketContainer.java:765) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsServerContainer.destroy(WsServerContainer.java:297) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsContextListener.contextDestroyed(WsContextListener.java:48) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3427) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardContext.stop(StandardContext.java:3920) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.jboss.as.web.deployment.WebDeploymentService.doStop(WebDeploymentService.java:176) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at org.jboss.as.web.deployment.WebDeploymentService.access$100(WebDeploymentService.java:59) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at org.jboss.as.web.deployment.WebDeploymentService$2.run(WebDeploymentService.java:114) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_51] 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] at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Here is relevant part of server.log (for NIO2 connector): Error during blocking read: java.util.concurrent.ExecutionException: java.io.IOException: Connection reset by peer at sun.nio.ch.PendingFuture.get(PendingFuture.java:202) [rt.jar:1.7.0_51] at org.apache.tomcat.util.net.NioChannel.readBytes(NioChannel.java:597) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.coyote.http11.InternalNioInputBuffer.fill0(InternalNioInputBuffer.java:458) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.coyote.http11.InternalNioInputBuffer.fill(InternalNioInputBuffer.java:425) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.coyote.http11.InternalNioInputBuffer.parseRequestLine(InternalNioInputBuffer.java:290) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:288) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:911) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.util.net.NioEndpoint$ChannelProcessor.run(NioEndpoint.java:932) [jbossweb-7.4.4.Final.jar:7.4.4.Final] 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] Caused by: java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) [rt.jar:1.7.0_51] at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39) [rt.jar:1.7.0_51] at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) [rt.jar:1.7.0_51] at sun.nio.ch.IOUtil.read(IOUtil.java:192) [rt.jar:1.7.0_51] at sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead(UnixAsynchronousSocketChannelImpl.java:387) [rt.jar:1.7.0_51] at sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:191) [rt.jar:1.7.0_51] at sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213) [rt.jar:1.7.0_51] at sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:293) [rt.jar:1.7.0_51] ... 1 more 13:20:37,840 DEBUG [org.apache.coyote.http11] (ServerService Thread Pool -- 55) JBWEB003065: Error during non blocking write: java.nio.channels.ShutdownChannelGroupException at sun.nio.ch.Invoker.invokeIndirectly(Invoker.java:210) [rt.jar:1.7.0_51] at sun.nio.ch.Invoker.invoke(Invoker.java:176) [rt.jar:1.7.0_51] at sun.nio.ch.AsynchronousSocketChannelImpl.write(AsynchronousSocketChannelImpl.java:368) [rt.jar:1.7.0_51] at sun.nio.ch.AsynchronousSocketChannelImpl.write(AsynchronousSocketChannelImpl.java:398) [rt.jar:1.7.0_51] at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:969) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.coyote.http11.InternalNioOutputBuffer$OutputBufferImpl.doWrite(InternalNioOutputBuffer.java:826) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.coyote.http11.InternalNioOutputBuffer.doWrite(InternalNioOutputBuffer.java:340) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.coyote.Response.doWrite(Response.java:594) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:421) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:450) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:365) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:339) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:99) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:109) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:74) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:388) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsRemoteEndpointImplBase.java:284) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:228) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:494) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:410) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.close(WsSession.java:386) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsWebSocketContainer.destroy(WsWebSocketContainer.java:765) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsServerContainer.destroy(WsServerContainer.java:297) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsContextListener.contextDestroyed(WsContextListener.java:48) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3427) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardContext.stop(StandardContext.java:3920) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.jboss.as.web.deployment.WebDeploymentService.doStop(WebDeploymentService.java:176) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at org.jboss.as.web.deployment.WebDeploymentService.access$100(WebDeploymentService.java:59) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at org.jboss.as.web.deployment.WebDeploymentService$2.run(WebDeploymentService.java:114) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_51] 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] at org.jboss.threads.JBossThread.run(JBossThread.java:122) 13:20:41,998 DEBUG [org.apache.catalina.session] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) Start expire sessions StandardManager at 1401448841998 sessioncount 0 13:20:41,999 DEBUG [org.apache.catalina.session] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) End expire sessions StandardManager processingTime 1 expired sessions: 0 13:20:57,849 DEBUG [org.apache.tomcat.websocket] (ServerService Thread Pool -- 55) JBWEB008803: Failed to send close message to remote endpoint: java.io.IOException: java.util.concurrent.TimeoutException at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:243) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:494) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:410) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.close(WsSession.java:386) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsWebSocketContainer.destroy(WsWebSocketContainer.java:765) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsServerContainer.destroy(WsServerContainer.java:297) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsContextListener.contextDestroyed(WsContextListener.java:48) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3427) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardContext.stop(StandardContext.java:3920) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.jboss.as.web.deployment.WebDeploymentService.doStop(WebDeploymentService.java:176) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at org.jboss.as.web.deployment.WebDeploymentService.access$100(WebDeploymentService.java:59) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at org.jboss.as.web.deployment.WebDeploymentService$2.run(WebDeploymentService.java:114) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_51] 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] at org.jboss.threads.JBossThread.run(JBossThread.java:122) Caused by: java.util.concurrent.TimeoutException at org.apache.tomcat.websocket.FutureToSendHandler.get(FutureToSendHandler.java:115) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:233) [jbossweb-7.4.4.Final.jar:7.4.4.Final] ... 17 more 13:20:57,876 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/jboss-as-autobahn]] (ServerService Thread Pool -- 55) JBWEB000306: Exception sending context destroyed event to listener instance of class org.apache.tomcat.websocket.server.WsContextListener: java.lang.NullPointerException at org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:105) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doClose(WsRemoteEndpointImplServer.java:144) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.close(WsRemoteEndpointImplBase.java:589) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:500) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:410) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsSession.close(WsSession.java:386) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.WsWebSocketContainer.destroy(WsWebSocketContainer.java:765) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsServerContainer.destroy(WsServerContainer.java:297) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.tomcat.websocket.server.WsContextListener.contextDestroyed(WsContextListener.java:48) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:3427) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.apache.catalina.core.StandardContext.stop(StandardContext.java:3920) [jbossweb-7.4.4.Final.jar:7.4.4.Final] at org.jboss.as.web.deployment.WebDeploymentService.doStop(WebDeploymentService.java:176) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at org.jboss.as.web.deployment.WebDeploymentService.access$100(WebDeploymentService.java:59) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at org.jboss.as.web.deployment.WebDeploymentService$2.run(WebDeploymentService.java:114) [jboss-as-web-7.4.0.Final-redhat-SNAPSHOT.jar:7.4.0.Final-redhat-SNAPSHOT] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_51] 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] at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Still valid for EAP 6.3.0.ER10.
This issue can be also reproduced during redeployment in about 50 % cases using [1] [1] https://github.com/arun-gupta/jboss-samples/tree/master/eap63/websocket-binary
Should be fixed by 7.5.0.Beta5 upgrade 1157438
Verified in EAP 6.4.0.DR11