我正在学习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,所以猜测它无法找到服务,我确定我做的事情很愚蠢,但无法弄清问题在哪里
由于
答案 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.