【发布时间】:2014-03-02 16:54:58
【问题描述】:
我正在尝试在 Wildfly 上部署一个包含 WebSocket 端点的应用程序,但出现此错误:
javax.websocket.DeploymentException: UT003012: 方法公共无效 Endpoint.openConnection(javax.websocket.Session,javax.websocket.EndpointConfig,java.lang.String) 有无效参数 [2]"}}
这是端点类的代码:
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) {
...
}
}
这是 Wildfly 日志的完整堆栈:
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
删除最后两个参数后部署成功。
由于WebSocket JSR 声明使用@OnOpen 注释的方法可以具有我的方法中的参数,我不明白为什么Wildfly 拒绝部署应用程序。
更新:这是 WEB-INF/lib 文件夹:
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
【问题讨论】:
-
你的 WEB-INF/lib 是什么样的?
-
谢谢@ctomc 我已经编辑了答案,添加了 WEB-INF/lib 文件夹。
标签: jakarta-ee jboss websocket wildfly