WebSocket握手:意外的响应代码:404 -

时间:2015-05-28 08:23:03

标签: java javascript tomcat websocket

我正在学习websockets并按照此处的说明进行操作:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html

我使用tomcat v8.0.21来部署我的webapp但是出现以下错误

当我访问webapp时,我的JavaScript项目看起来很好:我的localhost并访问WebSocketJavaScriptProject

虽然在控制台窗口中出现错误:与'ws:// localhost:8080 / WebsocketHome / actions'的WebSocket连接失败:WebSocket握手期间出错:意外响应代码:404

我的代码位于此处:https://github.com/darkcloudi/WebSocketProject

我的应用程序与Oracle上的示例之间的区别是我将其拆分为两个项目一个服务和另一个Web应用程序。

我无法弄清楚为什么我会获得404作为服务.war文件被称为WebsocketHome。什么会导致这个问题?通常找不到404,所以猜测它无法找到服务,我确定我做的事情很愚蠢,但无法弄清问题在哪里

由于

2 个答案:

答案 0 :(得分:7)

握手期间发生错误,因为Tomcat有自己的websi api。因此,您可能在pom.xml中添加了JSR实现或类似javax.websocket-api的内容,在运行时会出现冲突。

尝试不将Websocket-library导出到您的Web服务器,因此它使用自己的实现。

如果您使用maven,请按提供的方式设置websocket依赖项:

<!-- Provided Websocket API, because tomcat has its own implementation -->
<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.1</version>
    <scope>provided</scope>
</dependency>

答案 1 :(得分:-1)

I also had the same problem. Try removing the unwanted jars which contains websocket in your $JAVA_HOME/lib folder. and then add only what you are importing in serverendpoint file.