Error during WebSocket handshake

情景

开发公司的websocket会话,本地tomcat8.5跑的没有问题,但是经理部署的时候用的是tomcat7。于是悲剧就发生了,显示连接已经建立了,但是就是握手失败。 我再本地用tomcat7跑,浏览器提示报错如下:

WebSocket connection to ‘ws://IP:port/socketChatServer/ws’ failed: Error during WebSocket handshake: Unexpected response code: 500

解决

这种情况肯定是跟tomcat版本相关的,参考了几个博客,了解到出现问题原因是,tomcat7自身有关于websocket的jar,当我们下项目中引入其他关于websocket的依赖的时候,发生冲突产生了问题。我自己的项目中加入的依赖如下:

 <dependency>
            <groupId>javax.websocket</groupId>
            <artifactId>javax.websocket-api</artifactId>
            <version>1.1</version>
            <scope>provided</scope>
        </dependency>

解决方法主要有下面几个:

  • 解决一:
    将自己加入的websocket相关的包的scope属性设置成provided,这意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期,相当于compile,但是在打包阶段做了exclude的动作。保证了tomcat自身的jar不会与当前jar产生冲突,但是我设置了没管用,可能滴Idea中还需要做相关动作
  • 解决二
    正常打包之后,项目部署在tomcat下面,打开下面的路径
    apache-tomcat-7.0.82\webapps\你的项目名\WEB-INF\lib
    找到上面的maven项目中提到的依赖对应的jar,我的是javax.websocket-api-1.1,然后就可以成功启动(如果在webapp下面找不到对应项目名目录而只有war包的话,可以先运行一遍就出来了)
再次启动,大功告成!!

在这里插入图片描述
哪位可以跟我讲下领导为什么就是不想用tomcat8啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值