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

Sever Sent Event IOException 导致无法捕获的

Sever Sent Event IOException 导致无法捕获的

至尊宝的传说 2022-05-21 21:09:12
我有一个应用程序,客户端接收 SseEmitter,SseEmitter 会将 jms 消息中继到客户端。客户端关闭连接(关闭浏览器)时出现问题。将引发 IOException 导致以下无法捕获的异常:2019-01-24 12:33:59.163 ERROR 26516 --- [nio-8080-exec-6] o.a.catalina.connector.CoyoteAdapter     : Exception while processing an asynchronous requestjava.lang.IllegalStateException: Calling [asyncError()] is not valid for a request with Async state [MUST_DISPATCH]    at org.apache.coyote.AsyncStateMachine.asyncError(AsyncStateMachine.java:440) ~[tomcat-embed-core-9.0.14.jar:9.0.14]    at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:512) [tomcat-embed-core-9.0.14.jar:9.0.14]    at org.apache.coyote.Request.action(Request.java:430) ~[tomcat-embed-core-9.0.14.jar:9.0.14]    at org.apache.catalina.core.AsyncContextImpl.setErrorState(AsyncContextImpl.java:382) ~[tomcat-embed-core-9.0.14.jar:9.0.14]捕获 IOException 不会阻止抛出此异常。我已经实现了一项工作,客户端发送请求以从将发送事件的发射器集合中删除他的发射器。但是,在客户端/浏览器崩溃的情况下,仍然会抛出此异常。   @Scheduled(fixedDelay = 2000L)      public void sendEvent()  {           TextMessage message = null;           try {               message = messageBlockingQueue.take();           } catch (InterruptedException e) {               e.printStackTrace();           }           for(SseEmitter sseEmitter:emitterMap.values()) {               TextMessage finalMessage = message;                   try {                       sseEmitter.send(finalMessage.getText());                   }  catch (IOException e) {                       sseEmitter.completeWithError(e);                   } catch (JMSException e) {                       e.printStackTrace();                   }            }        }
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

经过进一步研究,这个异常可以归咎于tomcat中的一个错误。

https://github.com/spring-projects/spring-boot/issues/15057

为了解决这个问题,我从 tomcat 切换到了 jetty。


查看完整回答
反对 回复 2022-05-21
  • 1 回答
  • 0 关注
  • 319 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号