gpt4 book ai didi

Java websocket 服务器给出 404

转载 作者:搜寻专家 更新时间:2023-10-31 20:28:18 25 4
gpt4 key购买 nike

我正在尝试构建一个 java websocket 服务器。我写了一个简单的服务器端点:

@ServerEndpoint(value = "/test")
public class EndPoint {
static Queue<Session> queue = new ConcurrentLinkedQueue<Session>();

public static void send(int a, int b) {
try {
for(Session session : queue) {
session.getBasicRemote().sendText("a = " + a + ",b=" + b);
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}

@OnOpen
public void openConnection(Session session) {
queue.add(session);
}

@OnClose
public void closeConnection(Session session) {
queue.remove(session);
}

@OnError
public void error(Session session, Throwable t) {
queue.remove(session);
}
}

我的 web.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">


</web-app>

当我从 Javascript 访问 ws://localhost:8080/websocket-1.0/test 时,我收到了 404 响应。我正在使用 tomcat 8 来部署它。我在这里缺少什么?

最佳答案

1) 使用最新版Tomcat 7.0.x或最新版Tomcat 8.0.x

2) 确保您的 war 仅包含 ServerEndpoint 类和一个空的 web.xml。 Tomcat自动扫描加载带有ServerEndpoint注解的类

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">

</web-app>

3) 验证 catalina.out 是否有以下日志消息并且没有异常。

org.apache.catalina.startup.HostConfig.deployWAR 部署 web 应用程序存档/usr/local/tomcat/apache-tomcat-8.0.12/webapps/.war

关于Java websocket 服务器给出 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23797751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com