springBoot集成websocket报java.lang.IllegalStateException: Failed to register @ServerEndpoint class:错误
解决springBoot整合websocket启动报错的问题
·
搜了很多答案,大致有以下几种解决办法,如果有类似错误,大家可以按下面几类错误对照检查一下:
1、
@ServerEndpoint("/webSocket/message/{xxx}/{xxxx}")
路径前面没有“/”,会导致这个错误,注意检查。
2、
@OnOpen
public void onOpen(Session session, @PathParam("xxx") String xxx, @PathParam("xxxx") Integer xxxx)
获取路径中的参数时要使用@PathParam,若使用了其他的会报错。
3、
@Component
去掉类名上的@Component注解可解决报错,亲测确实没有报错了,但是在本地也无法建立连接了,只能打包时侯将该注解去掉,只能说这样做有用,但是不太方便。
4、AOP的问题,没太理解具体要怎么处理,不再详细阐述了。
5、这个是我自己项目的解决办法,试了以上几个办法都不太有效的时候,我又去详细观察了报错信息,还真的让我发现了一段有价值的报错信息,如下:
Caused by: javax.websocket.DeploymentException: No Throwable parameter was present on the method [onError] of class [com.dxhy.bxsdk.business.websocketService.MessageWebsocket] that was annotated with OnError
大致意思就是说
原因:javax.websocket.DeploymentException:使用 OnError 注释的类 [com.dxhy.bxsdk.business.websocketService.MessageWebsocket] 的方法 [onError] 上没有 Throwable 参数
根据这段报错信息,我去检查了onError方法,果然没有Throwable参数,加上之后就好了,加完后的代码如下:
@OnError
public void onError(Session session, Throwable error) {
log.info("连接错误!原因:{}", error.getMessage());
}
至此,问题解决。
更多推荐
所有评论(0)