Java websocket服务器返回404错误

5

我正在尝试构建一个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进行部署。我错过了什么?

你是否正在使用Tomcat示例Web应用程序中的websocket.ExampleConfig类? - LiuYan 刘研
2个回答

2

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


0

我还是得到404错误。在web.xml文件中有什么遗漏吗? - coder
你确定你在8080端口上吗? - Scary Wombat
注解能否通过更改端口来改变? - Motomotes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接