【报错】java.lang.IllegalStateException: Failed to register @ServerEndpoint class: class com.xx.xxx

3 篇文章 0 订阅
1 篇文章 0 订阅

搜了很多,发现有几种错误及解决办法,有类似可对比参照:

1、路径错误

问题:路径前面没有“/”,会导致这个错误。

错误代码:

@ServerEndpoint("imserver/{token}")

 正确代码:

@ServerEndpoint("/imserver/{token}")

2、@PathParam的使用

问题:获取路径中的参数要使用@PathParam,若使用了其他的会报错。

 @OnOpen
 public void openConnection(Session session, @PathParam("token") String token)

3、@Component注解问题

问题:去掉类名上的@Component注解可解决报错,亲测确实没有报错了,但是在本地也无法建立连接了,只能打包时侯将该注解去掉,有用但不太方便。

4、AOP问题

后面那一串是代表类被CGLIB转换为了代理对象,WebSocketServer这个类被切了,以至于@ServerEndPoint注解无法注入至对应的对象,导致报错;检查自己项目中的AOP切入点,包括springboot配置文件里的,排除掉 WebSocketServer不被切就可以了。

5、@OnError注解下方法的问题(本人项目解决方法)

大致意思是: 类型为[class java.lang]的参数。在类[java.lang.reflect]的[onError]方法上发现异常。方法],它没有@PathParam注释

解决方法:检查onError方法,发现没有Throwable参数,加上之后就好了,加完后的代码如下:

@OnError
public void onError(Throwable throwable){
    logger.error("连接错误,原因:"+throwable.getMessage());
}

还有一种情况下也可以使用这种解决方法:

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 参数

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值