I'm trying to deploy an application containing a WebSocket endpoint on Wildfly and I get this error:
javax.websocket.DeploymentException: UT003012: Method public void Endpoint.openConnection(javax.websocket.Session,javax.websocket.EndpointConfig,java.lang.String) has invalid parameters [2]"}}
This is the code for the endpoint class:
import javax.websocket.EndpointConfig;
import javax.websocket.CloseReason;
import javax.websocket.OnClose;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import javax.ws.rs.PathParam;
@ServerEndpoint(value = "/update-user/{token}")
public class UpdateUsersEndpoint {
@OnOpen
public void openConnection(Session session, EndpointConfig config, @PathParam("token") String token) {
...
}
@OnClose
public void closedConnection(Session session, CloseReason reason, @PathParam("token") String token) {
...
}
}
This is the full stack from Wildfly log:
07:44:31,876 INFO [io.undertow.websockets.jsr] (MSC service thread 1-4) UT026003: Adding annotated server endpoint class test.UpdateUsersEndpoint for path /update-user/{token}
07:44:31,877 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./test: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./test: Failed to start service
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) [jboss-msc-1.2.0.Final.jar:1.2.0.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.lang.RuntimeException: javax.websocket.DeploymentException: UT003012: Method public void test.UpdateUsersEndpoint.openConnection(javax.websocket.Session,javax.websocket.EndpointConfig,java.lang.String) has invalid parameters [2]
at io.undertow.websockets.jsr.Bootstrap.handleDeployment(Bootstrap.java:50)
at io.undertow.servlet.core.DeploymentManagerImpl.handleExtensions(DeploymentManagerImpl.java:237)
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:146)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:86)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.start(UndertowDeploymentService.java:71)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
... 3 more
Caused by: javax.websocket.DeploymentException: UT003012: Method public void test.UpdateUsersEndpoint.openConnection(javax.websocket.Session,javax.websocket.EndpointConfig,java.lang.String) has invalid parameters [2]
at io.undertow.websockets.jsr.annotated.BoundMethod.<init>(BoundMethod.java:43)
at io.undertow.websockets.jsr.annotated.AnnotatedEndpointFactory.create(AnnotatedEndpointFactory.java:81)
at io.undertow.websockets.jsr.ServerWebSocketContainer.addEndpointInternal(ServerWebSocketContainer.java:266)
at io.undertow.websockets.jsr.ServerWebSocketContainer.addEndpoint(ServerWebSocketContainer.java:243)
at io.undertow.websockets.jsr.Bootstrap.handleDeployment(Bootstrap.java:44)
... 9 more
The deployment is successful upon removing the two last parameters.
Since the WebSocket JSR states that a method annotated with @OnOpen
can have the parameters I have in my method, I can't understand why Wildfly refuses to deploy the application.
UPDATE: this is the WEB-INF/lib folder:
activation-1.1.1.jar
apache-mime4j-0.6.jar
asm-3.3.1.jar
commons-email-1.3.1.jar
commons-logging-1.1.1.jar
geronimo-jta_1.1_spec-1.1.1.jar
gson-2.2.2.jar
istack-commons-runtime-2.16.jar
jackson-annotations-2.2.1.jar
jackson-core-2.2.1.jar
jackson-databind-2.2.1.jar
jackson-jaxrs-base-2.2.1.jar
jackson-jaxrs-json-provider-2.2.1.jar
jackson-module-jaxb-annotations-2.2.1.jar
jaxb-api-2.2.7.jar
jaxb-core-2.2.7.jar
jaxb-impl-2.2.7.jar
jboss-annotations-api_1.2_spec-1.0.0.Final.jar
jboss-ejb-api_3.2_spec-1.0.0.Final.jar
jboss-interceptors-api_1.2_spec-1.0.0.Final.jar
jboss-jms-api_2.0_spec-1.0.0.Final.jar
jboss-servlet-api_3.1_spec-1.0.0.Final.jar
jboss-websocket-api_1.0_spec-1.0.0.Final.jar
jcl-over-slf4j-1.7.1.jar
jsr173_api-1.0.jar
logback-classic-1.0.10.jar
logback-core-1.0.10.jar
mail-1.4.5.jar
resteasy-client-3.0.6.Final.jar
resteasy-jackson2-provider-3.0.6.Final.jar
resteasy-jaxb-provider-3.0.6.Final.jar
resteasy-multipart-provider-3.0.6.Final.jar
slf4j-api-1.7.1.jar