首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理Cometd异常

处理Cometd异常
EN

Stack Overflow用户
提问于 2015-05-06 12:58:53
回答 1查看 456关注 0票数 0

多年来,我一直在使用Cometd的各种版本(目前为2.5.1版本),一切都如预期的那样工作。然而,我的日志中充满了很多异常,大多数是java.io.IOExceptionorg.eclipse.jetty.io.EofException

我遇到了这个论坛帖子,其中解释说,至少有一个例外,即“断管”可以忽略不计:

此异常是由写入由远程端关闭的套接字引起的。你的客户决定突然关闭插座。如果这是一个真正的日志(相对于测试日志),客户端可以关闭浏览器,让计算机进入睡眠状态等等。 别理它。

现在,我有几个更多的异常已经填充我的日志多年了,关于更详细的堆栈跟踪,请参见下面的实际问题:

  • java.io.IOException: closedOut 1006:null
  • java.io.IOException: closedOut 1006:null
  • org.eclipse.jetty.io.EofException: Closed
  • java.io.IOException: Connection reset by peer

因此,我的问题是:是否也忽略这些异常是安全的,还是有什么东西,我可以改变代码(除了改变日志级别)是安全的?

Stacktraces:

代码语言:javascript
复制
12:36:28 WARN  - .s.s.l.BayeuxInitializer$1 -  (pool-1-thread-20)
java.io.IOException: closedOut 1006:null
    at org.eclipse.jetty.websocket.WebSocketConnectionRFC6455$WSFrameConnection.sendMessage(WebSocketConnectionRFC6455.java:447) ~[jetty-websocket-8.1.5.v20120716.jar:8.1.5.v20120716]
    at org.cometd.websocket.server.WebSocketTransport.send(WebSocketTransport.java:244) ~[cometd-websocket-jetty-2.5.1.jar:na]
    at org.cometd.websocket.server.WebSocketTransport.send(WebSocketTransport.java:238) ~[cometd-websocket-jetty-2.5.1.jar:na]
    at org.cometd.websocket.server.WebSocketTransport$WebSocketScheduler.schedule(WebSocketTransport.java:555) [cometd-websocket-jetty-2.5.1.jar:na]
    at org.cometd.websocket.server.WebSocketTransport$WebSocketScheduler.run(WebSocketTransport.java:469) [cometd-websocket-jetty-2.5.1.jar:na]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_65]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_65]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]


12:38:54 WARN  - .s.s.l.BayeuxInitializer$1 -  (pool-1-thread-27)
org.eclipse.jetty.io.EofException: Closed
    at org.eclipse.jetty.websocket.WebSocketGeneratorRFC6455.addFrame(WebSocketGeneratorRFC6455.java:80) ~[jetty-websocket-8.1.5.v20120716.jar:8.1.5.v20120716]
    at org.eclipse.jetty.websocket.WebSocketConnectionRFC6455$WSFrameConnection.sendMessage(WebSocketConnectionRFC6455.java:449) ~[jetty-websocket-8.1.5.v20120716.jar:8.1.5.v20120716]
    at org.cometd.websocket.server.WebSocketTransport.send(WebSocketTransport.java:244) ~[cometd-websocket-jetty-2.5.1.jar:na]
    at org.cometd.websocket.server.WebSocketTransport.send(WebSocketTransport.java:238) ~[cometd-websocket-jetty-2.5.1.jar:na]
    at org.cometd.websocket.server.WebSocketTransport$WebSocketScheduler.schedule(WebSocketTransport.java:555) [cometd-websocket-jetty-2.5.1.jar:na]
    at org.cometd.websocket.server.WebSocketTransport$WebSocketScheduler.run(WebSocketTransport.java:469) [cometd-websocket-jetty-2.5.1.jar:na]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_65]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_65]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]


12:33:46 WARN  - .s.s.l.BayeuxInitializer$1 -  (pool-1-thread-45)
java.io.IOException: Connection reset by peer
    at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[na:1.7.0_65]
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[na:1.7.0_65]
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[na:1.7.0_65]
    at sun.nio.ch.IOUtil.write(IOUtil.java:51) ~[na:1.7.0_65]
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487) ~[na:1.7.0_65]
    at org.eclipse.jetty.io.nio.ChannelEndPoint.flush(ChannelEndPoint.java:288) ~[jetty-io-8.1.5.v20120716.jar:8.1.5.v20120716]
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.flush(SelectChannelEndPoint.java:356) ~[jetty-io-8.1.5.v20120716.jar:8.1.5.v20120716]
    at org.eclipse.jetty.websocket.WebSocketGeneratorRFC6455.flushBuffer(WebSocketGeneratorRFC6455.java:207) ~[jetty-websocket-8.1.5.v20120716.jar:8.1.5.v20120716]
    at org.eclipse.jetty.websocket.WebSocketGeneratorRFC6455.addFrame(WebSocketGeneratorRFC6455.java:174) ~[jetty-websocket-8.1.5.v20120716.jar:8.1.5.v20120716]
    at org.eclipse.jetty.websocket.WebSocketConnectionRFC6455$WSFrameConnection.sendMessage(WebSocketConnectionRFC6455.java:449) ~[jetty-websocket-8.1.5.v20120716.jar:8.1.5.v20120716]
    at org.cometd.websocket.server.WebSocketTransport.send(WebSocketTransport.java:244) ~[cometd-websocket-jetty-2.5.1.jar:na]
    at org.cometd.websocket.server.WebSocketTransport.send(WebSocketTransport.java:238) ~[cometd-websocket-jetty-2.5.1.jar:na]
    at org.cometd.websocket.server.WebSocketTransport$WebSocketScheduler.schedule(WebSocketTransport.java:555) [cometd-websocket-jetty-2.5.1.jar:na]
    at org.cometd.websocket.server.WebSocketTransport$WebSocketScheduler.run(WebSocketTransport.java:469) [cometd-websocket-jetty-2.5.1.jar:na]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_65]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_65]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-06 15:34:20

默认情况下,CometD服务器不会关闭连接,除非这些连接长期处于空闲状态。但是,由于CometD有内置的心跳机制,所以连接永远不会空闲到触发服务器端关闭(假设网络是稳定的)。

每当您遇到服务器由于连接关闭而无法写入客户端的情况时,这通常是由于客户端关闭连接或客户端与服务器之间的网络连接错误所致。

这种类型的异常可以在服务器端日志上忽略。你在问题中报告的所有例外情况都是这样的。

考虑升级到CometD 3.x。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30077505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档