gpt4 book ai didi

Java/jetty/野蝇 : Gracefully Handle Aborted Client Connections

转载 作者:行者123 更新时间:2023-11-29 21:50:01 26 4
gpt4 key购买 nike

我开发了一个播放音频和视频文件的网络应用程序。用户可以更改当前播放的轨道,在这种情况下,会在客户端为 HTML 5 播放器设置新的源。应用的分发使用嵌入式Jetty 9,其他环境运行WildFly 8。

应用程序正常工作,但是当用户更改轨道时,WildFly 会发出此堆栈跟踪:

java.io.IOException: An established connection was aborted by the software in your host machine
at sun.nio.ch.SocketDispatcher.writev0(Native Method) [rt.jar:1.7.0_75]
at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:55) [rt.jar:1.7.0_75]
at sun.nio.ch.IOUtil.write(IOUtil.java:148) [rt.jar:1.7.0_75]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:524) [rt.jar:1.7.0_75]
at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:161)
at io.undertow.server.protocol.http.HttpResponseConduit.write(HttpResponseConduit.java:609) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.write(AbstractFixedLengthStreamSinkConduit.java:148) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
...

Jetty 抛出类似的错误:

org.eclipse.jetty.io.EofException
at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:192)
at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:408)
at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:302)
at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:128)
...
Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)

这是有道理的——是的,客户端中止了与前一个源文件的连接,并发出了下一个文件的 GET 请求,但这是应用程序的预期操作。

有没有办法优雅地处理这个问题并避免这些错误?

最佳答案

如果异常是从您的应用程序正在进行的调用内部抛出的,请捕获 IOException 并按您想要的方式处理它 - 可能是从您的代码正在执行的任何操作中返回而不提示。

Tomcat 有 org.apache.catalina.connector.ClientAbortException,因此您可以区分这个和其他 IOException,但没有 Servlet 规范定义的可移植异常。

如果异常发生在纯容器代码中,例如 IO 工作线程,那么我会提交一个错误,指出预计会发生客户端断开连接,因此不应在高于调试/跟踪级别的任何级别记录异常。

关于Java/jetty/野蝇 : Gracefully Handle Aborted Client Connections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29761957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com