You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

尝试连接WebSocket时出现404错误,请求技术协助

解决Tomcat 7下WebSocket端点404的问题

看起来你的核心问题是@ServerEndpoint注解的WebSocket端点没有被Tomcat正确注册,导致客户端请求返回404。结合你的环境(Tomcat 7.0.52 + Java 8 + NetBeans),我帮你梳理几个关键排查和修复步骤:

1. 确认Tomcat 7的WebSocket支持前提

Tomcat 7从7.0.47版本开始支持JSR-356(Java WebSocket规范),你的7.0.52版本是符合要求的,但要注意:

  • 不要在项目的WEB-INF/lib下手动添加javax.websocket-api.jar或tomcat-websocket.jar,Tomcat自身的lib目录已经包含这些依赖,重复添加会导致类加载冲突。
  • 如果你的项目用Maven管理,确保WebSocket相关依赖的<scope>设置为provided,让Tomcat使用自带的库。

2. 检查web.xml的版本与注解扫描配置

如果你的web.xml是2.5及以下版本,默认不会启用注解自动扫描,Tomcat无法识别@ServerEndpoint注解。你需要升级web.xml到3.0+版本:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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_3_0.xsd"
         version="3.0">
    <!-- 无需额外配置,默认启用注解扫描 -->
</web-app>

如果无法升级web.xml,你可以手动注册端点,但升级到3.0+是更简单的方案。

3. 验证类的打包路径

确保你的MonitorWebSocket.class文件被正确打包到服务器的WEB-INF/classes/com/myserver/server/monitor/目录下。你可以直接解压服务器上的WAR包,或者查看NetBeans构建后的dist目录,确认类文件存在且路径完全匹配包名。

4. 排查Tomcat日志与路径拦截

  • 查看localhost.log(而非仅catalina.out),里面会记录WebSocket端点的注册日志,如果有注册失败的信息会在这里体现。
  • 检查Tomcat的conf/web.xml和项目的web.xml,确认没有Filter或Servlet占用了/wss路径,避免端点被拦截。

5. 简化测试代码排查

先写一个最简的WebSocket端点进行测试,排除业务代码的干扰:

package com.myserver.server.monitor;

import javax.websocket.OnMessage;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/testws")
public class TestWebSocket {
    @OnMessage
    public String echo(String message) {
        return "Echo: " + message;
    }
}

客户端用最简代码测试:

function initTest(){
    var ws = new WebSocket('wss://myserver.com/testws');
    ws.onopen = () => ws.send("hello");
    ws.onmessage = (e) => console.log(e.data);
}

如果这个最简版本还是返回404,那基本可以确定是Tomcat的注解扫描或依赖冲突问题。

6. 临时切换HTTP测试(排除WSS干扰)

为了排除HTTPS配置的影响,你可以先在服务器上测试HTTP版本的WebSocket(ws://myserver.com/testws)。如果HTTP版本能正常连接,再回头排查WSS的SSL配置(比如Tomcat的证书是否有效、SSL端口是否正确映射)。

内容的提问来源于stack exchange,提问作者jaume

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:24:04