-
Bug
-
Resolution: Fixed
-
Normal
-
8.6.4
-
Fails on WildFly Full 18.0.1.Final
Works with Jetty / Tomcat / Glassfish
-
ZK 9.0.1 S1
Steps to Reproduce
enable WebSocket in zk.xml
trigger an AU
<zk> <button onClick="Clients.log(event.toString())" label="test event"/> </zk>
Current Result
server error in WildFly Full 18.0.1.Final
04:08:30,678 WARN [org.zkoss.zkmax.au.websocket.WebSocketEndPoint] (default task-2) SERVER ERROR: java.lang.IllegalStateException: ZK Session cannot be null! at deployment.zktest-9.0.1-SNAPSHOT.war//org.zkoss.zk.ui.http.ZKWebSocket.initZkDesktop(ZKWebSocket.java:80) at deployment.zktest-9.0.1-SNAPSHOT.war//org.zkoss.zkmax.au.websocket.WebSocketEndPoint.onOpen(WebSocketEndPoint.java:93) at [email protected]//io.undertow.websockets.jsr.EndpointSessionHandler.onConnect(EndpointSessionHandler.java:129) at [email protected]//io.undertow.websockets.jsr.JsrWebSocketFilter$1.handleUpgrade(JsrWebSocketFilter.java:165) at [email protected]//io.undertow.server.protocol.http.HttpReadListener.exchangeComplete(HttpReadListener.java:385) at [email protected]//io.undertow.server.protocol.http.HttpServerConnection.exchangeComplete(HttpServerConnection.java:232) at [email protected]//io.undertow.server.HttpServerExchange.invokeExchangeCompleteListeners(HttpServerExchange.java:1279) at [email protected]//io.undertow.server.HttpServerExchange.terminateResponse(HttpServerExchange.java:1563) at [email protected]//io.undertow.server.Connectors.terminateResponse(Connectors.java:159) at [email protected]//io.undertow.server.protocol.http.HttpTransferEncoding$3.handleEvent(HttpTransferEncoding.java:197) at [email protected]//io.undertow.server.protocol.http.HttpTransferEncoding$3.handleEvent(HttpTransferEncoding.java:195) at [email protected]//io.undertow.conduits.HeadStreamSinkConduit.exitFlush(HeadStreamSinkConduit.java:192) at [email protected]//io.undertow.conduits.HeadStreamSinkConduit.flush(HeadStreamSinkConduit.java:133) at [email protected]//org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162) at [email protected]//io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:119) at [email protected]//org.xnio.channels.Channels.flushBlocking(Channels.java:63) at [email protected]//io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:618) at [email protected]//io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:528) at [email protected]//io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:617) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:328) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130) at [email protected]//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) at [email protected]//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at [email protected]//org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105) at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504) at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504) at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504) at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99) at [email protected]//io.undertow.server.Connectors.executeRootHandler(Connectors.java:376) at [email protected]//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) at [email protected]//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at [email protected]//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982) at [email protected]//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486) at [email protected]//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377) at java.base/java.lang.Thread.run(Thread.java:834) 04:08:30,692 ERROR [io.undertow.websockets.jsr.request] (default task-2) UT026001: Unable to instantiate endpoint: java.lang.NullPointerException at deployment.zktest-9.0.1-SNAPSHOT.war//org.zkoss.zkmax.au.websocket.WebSocketEndPoint.sendText(WebSocketEndPoint.java:297) at deployment.zktest-9.0.1-SNAPSHOT.war//org.zkoss.zkmax.au.websocket.WSAuWriter.close(WSAuWriter.java:68) at deployment.zktest-9.0.1-SNAPSHOT.war//org.zkoss.zkmax.au.websocket.WebSocketEndPoint.onError(WebSocketEndPoint.java:163) at [email protected]//io.undertow.websockets.jsr.EndpointSessionHandler.onConnect(EndpointSessionHandler.java:131) at [email protected]//io.undertow.websockets.jsr.JsrWebSocketFilter$1.handleUpgrade(JsrWebSocketFilter.java:165) at [email protected]//io.undertow.server.protocol.http.HttpReadListener.exchangeComplete(HttpReadListener.java:385) at [email protected]//io.undertow.server.protocol.http.HttpServerConnection.exchangeComplete(HttpServerConnection.java:232) at [email protected]//io.undertow.server.HttpServerExchange.invokeExchangeCompleteListeners(HttpServerExchange.java:1279) at [email protected]//io.undertow.server.HttpServerExchange.terminateResponse(HttpServerExchange.java:1563) at [email protected]//io.undertow.server.Connectors.terminateResponse(Connectors.java:159) at [email protected]//io.undertow.server.protocol.http.HttpTransferEncoding$3.handleEvent(HttpTransferEncoding.java:197) at [email protected]//io.undertow.server.protocol.http.HttpTransferEncoding$3.handleEvent(HttpTransferEncoding.java:195) at [email protected]//io.undertow.conduits.HeadStreamSinkConduit.exitFlush(HeadStreamSinkConduit.java:192) at [email protected]//io.undertow.conduits.HeadStreamSinkConduit.flush(HeadStreamSinkConduit.java:133) at [email protected]//org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162) at [email protected]//io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:119) at [email protected]//org.xnio.channels.Channels.flushBlocking(Channels.java:63) at [email protected]//io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:618) at [email protected]//io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:528) at [email protected]//io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:617) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:328) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130) at [email protected]//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) at [email protected]//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at [email protected]//org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105) at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504) at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504) at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504) at [email protected]//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1504) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78) at [email protected]//io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99) at [email protected]//io.undertow.server.Connectors.executeRootHandler(Connectors.java:376) at [email protected]//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) at [email protected]//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at [email protected]//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982) at [email protected]//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486) at [email protected]//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377) at java.base/java.lang.Thread.run(Thread.java:834)
Expected Result
working WS connection
Debug Information
In Undertow this would be triggered twice.
ZK cannot get the ZK Session by tempSessionKey since it is different.
Workaround
- relates to
-
ZK-4429 websockets not working on Glassfish (5)
- Closed