为了账号安全,请及时绑定邮箱和手机立即绑定

Jetty 中的 java.lang.ClassCastException 与 SseEmitter

Jetty 中的 java.lang.ClassCastException 与 SseEmitter

慕侠2389804 2021-12-22 15:25:39
我正在使用 Jetty 9.4(但我也尝试过 9.2)、spring-data-redis1.8.6 和 Spring 4.2。我基本上使用的是由提供的默认配置org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration,一切似乎都正常工作,直到我添加一个Controller具有返回端点的端点org.springframework.web.servlet.mvc.method.annotation.SseEmitter:@RequestMapping(value = "sse", method = RequestMethod.GET)@ResponseBodypublic ResponseEntity<SseEmitter> sse() {    SseEmitter emitter = new SseEmitter();    emitter.onCompletion(..);    emitter.onTimeout(..);    storeEmitterInHashMap(emitter);    return ResponseEntity.ok().header("Cache-Control", "no-store").body(emitter);}似乎发生的是,当 SSE 连接在 30 秒后出现连接超时时,Spring/Jetty 会尝试关闭侦听器。但是由于ClassCastException控制台中打印的a而失败:[WARNING] java.lang.ClassCastException:     org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper$HttpSessionWrapper     cannot be cast to org.eclipse.jetty.server.session.SessionHandler$SessionIf     while invoking onComplete listener    org.eclipse.jetty.server.session.SessionHandler$SessionAsyncListener@67e50aa3这种情况大约每 30 秒发生一次。如果我导航到另一个未连接到 SSE 端点的页面,警告就会消失。这是需要担心的吗?这是什么原因造成的?我该如何解决?
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

这是Jetty中的一个错误并在版本中修复9.4.13.v20181111


查看完整回答
反对 回复 2021-12-22
  • 1 回答
  • 0 关注
  • 252 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信