]
Toby Crawley commented on WFLY-3708:
------------------------------------
Are you able/willing to use IRC? If so, we could probably figure all of this out via a
quick conversation in #immutant on
. But the short answer is: your
main will need to call {{(immutant.web/run your-handler)}}.
Websocket Error in Deployed War File (WildFly)
----------------------------------------------
Key: WFLY-3708
URL:
https://issues.jboss.org/browse/WFLY-3708
Project: WildFly
Issue Type: Bug
Security Level: Public(Everyone can see)
Reporter: Tom Goldsmith
In Immutant incremental 195, I am seeing the following error when I deploy a .war file to
WildFly and try to connect to a websocket:
12:30:22,273 WARN [org.jboss.modules] (XNIO-2 I/O-1) Failed to define class
org.xnio.ChannelListener$Setter in Module
"deployment.websocket-wildfly-test-0.1.0-SNAPSHOT-standalone.war:main" from
Service Module Loader: java.lang.LinkageError: loader constraint violation: loader
(instance of org/jboss/modules/ModuleClassLoader) previously initiated loading for a
different type with name "org/xnio/ChannelListener$Setter"
at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.8.0_05]
at java.lang.ClassLoader.defineClass(ClassLoader.java:760) [rt.jar:1.8.0_05]
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:361)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:482)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:277)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:92)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.Module.loadModuleClass(Module.java:568)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
[jboss-modules.jar:1.3.3.Final]
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459)
[jboss-modules.jar:1.3.3.Final]
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408)
[jboss-modules.jar:1.3.3.Final]
at
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134)
[jboss-modules.jar:1.3.3.Final]
at
org.projectodd.wunderboss.websocket.UndertowWebsocket$1.onConnect(UndertowWebsocket.java:43)
[wunderboss-web-1.x.incremental.98.jar:]
at
io.undertow.websockets.WebSocketProtocolHandshakeHandler$1.handleUpgrade(WebSocketProtocolHandshakeHandler.java:190)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.HttpReadListener.exchangeComplete(HttpReadListener.java:271)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.HttpServerConnection.exchangeComplete(HttpServerConnection.java:221)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.HttpServerExchange.invokeExchangeCompleteListeners(HttpServerExchange.java:1131)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange.terminateResponse(HttpServerExchange.java:1351)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.terminateResponse(Connectors.java:78)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.ServerFixedLengthStreamSinkConduit.channelFinished(ServerFixedLengthStreamSinkConduit.java:33)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.exitFlush(AbstractFixedLengthStreamSinkConduit.java:273)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.flush(AbstractFixedLengthStreamSinkConduit.java:207)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
[xnio-api-3.2.0.Final.jar:3.2.0.Final]
at
io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:100)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.HttpServerExchange.closeAndFlushResponse(HttpServerExchange.java:1489)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange.endExchange(HttpServerExchange.java:1470)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.websockets.spi.AsyncWebSocketHttpServerExchange.endExchange(AsyncWebSocketHttpServerExchange.java:187)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.websockets.core.protocol.Handshake.upgradeChannel(Handshake.java:121)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.websockets.core.protocol.Handshake.performUpgrade(Handshake.java:114)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.websockets.core.protocol.Handshake.performUpgrade(Handshake.java:142)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.websockets.core.protocol.version13.Hybi13Handshake.handshakeInternal(Hybi13Handshake.java:61)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.websockets.core.protocol.Handshake.handshake(Handshake.java:92)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.websockets.WebSocketProtocolHandshakeHandler.handleRequest(WebSocketProtocolHandshakeHandler.java:196)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.handlers.PathHandler.handleRequest(PathHandler.java:56)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.NameVirtualHostHandler.handleRequest(NameVirtualHostHandler.java:57)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.handlers.SetHeaderHandler.handleRequest(SetHeaderHandler.java:49)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest(HttpReadListener.java:156)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:91)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:45)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
[xnio-api-3.2.0.Final.jar:3.2.0.Final]
at
org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
[xnio-api-3.2.0.Final.jar:3.2.0.Final]
at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:87)
[xnio-nio-3.2.0.Final.jar:3.2.0.Final]
at org.xnio.nio.WorkerThread.run(WorkerThread.java:539)
[xnio-nio-3.2.0.Final.jar:3.2.0.Final]
12:30:22,282 ERROR [io.undertow.request] (XNIO-2 I/O-1) Blocking request failed
HttpServerExchange{ GET /}: java.lang.LinkageError: loader constraint violation: loader
(instance of org/jboss/modules/ModuleClassLoader) previously initiated loading for a
different type with name "org/xnio/ChannelListener$Setter"
at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.8.0_05]
at java.lang.ClassLoader.defineClass(ClassLoader.java:760) [rt.jar:1.8.0_05]
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:361)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:482)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:277)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:92)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.Module.loadModuleClass(Module.java:568)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
[jboss-modules.jar:1.3.3.Final]
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459)
[jboss-modules.jar:1.3.3.Final]
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408)
[jboss-modules.jar:1.3.3.Final]
at
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389)
[jboss-modules.jar:1.3.3.Final]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134)
[jboss-modules.jar:1.3.3.Final]
at
org.projectodd.wunderboss.websocket.UndertowWebsocket$1.onConnect(UndertowWebsocket.java:43)
[wunderboss-web-1.x.incremental.98.jar:]
at
io.undertow.websockets.WebSocketProtocolHandshakeHandler$1.handleUpgrade(WebSocketProtocolHandshakeHandler.java:190)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.HttpReadListener.exchangeComplete(HttpReadListener.java:271)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.HttpServerConnection.exchangeComplete(HttpServerConnection.java:221)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.HttpServerExchange.invokeExchangeCompleteListeners(HttpServerExchange.java:1131)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange.terminateResponse(HttpServerExchange.java:1351)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.terminateResponse(Connectors.java:78)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.ServerFixedLengthStreamSinkConduit.channelFinished(ServerFixedLengthStreamSinkConduit.java:33)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.exitFlush(AbstractFixedLengthStreamSinkConduit.java:273)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.flush(AbstractFixedLengthStreamSinkConduit.java:207)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
[xnio-api-3.2.0.Final.jar:3.2.0.Final]
at
io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:100)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.HttpServerExchange.closeAndFlushResponse(HttpServerExchange.java:1489)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange.endExchange(HttpServerExchange.java:1470)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.websockets.spi.AsyncWebSocketHttpServerExchange.endExchange(AsyncWebSocketHttpServerExchange.java:187)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.websockets.core.protocol.Handshake.upgradeChannel(Handshake.java:121)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.websockets.core.protocol.Handshake.performUpgrade(Handshake.java:114)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.websockets.core.protocol.Handshake.performUpgrade(Handshake.java:142)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.websockets.core.protocol.version13.Hybi13Handshake.handshakeInternal(Hybi13Handshake.java:61)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.websockets.core.protocol.Handshake.handshake(Handshake.java:92)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.websockets.WebSocketProtocolHandshakeHandler.handleRequest(WebSocketProtocolHandshakeHandler.java:196)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.handlers.PathHandler.handleRequest(PathHandler.java:56)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.handlers.NameVirtualHostHandler.handleRequest(NameVirtualHostHandler.java:57)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.handlers.SetHeaderHandler.handleRequest(SetHeaderHandler.java:49)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest(HttpReadListener.java:156)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:91)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at
io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:45)
[undertow-core-1.0.15.Final.jar:1.0.15.Final]
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
[xnio-api-3.2.0.Final.jar:3.2.0.Final]
at
org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
[xnio-api-3.2.0.Final.jar:3.2.0.Final]
at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:87)
[xnio-nio-3.2.0.Final.jar:3.2.0.Final]
at org.xnio.nio.WorkerThread.run(WorkerThread.java:539)
[xnio-nio-3.2.0.Final.jar:3.2.0.Final]
(that is the whole stacktrace).
A sample app that reproduces this scenario for me can be found at the following link:
https://dl.dropboxusercontent.com/u/37542498/websocket-wildfly-test.zip
I am creating my .war file with lein-ring. The following command is used in terminal:
lein ring uberwar
I am then deploying to WildFly standalone by running the following commands from the
WildFly bin:
Terminal Tab #1:
./standalone
Terminal Tab #2:
./jboss-cli.sh
connect
deploy <path-to-war-file>/websocket-wildfly-test-0.1.0-SNAPSHOT-standalone.war
I am then using
http://www.websocket.org/echo.html to connect to the websocket on port
5000. When I click the "connect" button, the aforementioned stacktrace is seen
in the standalone WildFly terminal tab.
I have cleared my maven cache and done everything I can think of to make sure it is a
completely fresh install.
Thanks,
Tom