将响应消息实体写入容器输出流时发生了I / O错误

时间:2016-07-06 04:55:03

标签: java google-chrome audio-streaming dropwizard

我正在使用dropwizard构建音乐流媒体应用程序,但safari和chrome的行为完全不同。在野生动物园,它玩完整的时间,但铬在它之间打破。 我在服务器端遇到以下错误。

ERROR [2016-07-06 04:01:44,258] org.glassfish.jersey.server.ServerRuntime$Responder: An I/O error has occurred while writing a response message entity to the container output stream.
! java.io.IOException: Broken pipe
! at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[na:1.8.0_60]
! at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[na:1.8.0_60]
! at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[na:1.8.0_60]
! at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[na:1.8.0_60]
! at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) ~[na:1.8.0_60]
! at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:170) ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
! ... 10 common frames omitted
! Causing: org.eclipse.jetty.io.EofException: null
! at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:192) ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
! at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:408) ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
! at org.eclipse.jetty.io.WriteFlusher.completeWrite(WriteFlusher.java:364) ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
! at org.eclipse.jetty.io.SelectChannelEndPoint.onSelected(SelectChannelEndPoint.java:111) ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
! at org.eclipse.jetty.io.SelectorManager$ManagedSelector.processKey(SelectorManager.java:640) ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
! at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:611) ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
! at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:549) ~[jetty-io-9.2.13.v20150730.jar:9.2.13.v20150730]
! at org.eclipse.jetty.util.thread.NonBlockingThread.run(NonBlockingThread.java:52) ~[jetty-util-9.2.13.v20150730.jar:9.2.13.v20150730]
! ... 3 common frames omitted

我为chrome浏览器进一步调试它。 从chrome浏览器我得到两个获取音频数据的请求,而服务器端则提供两个请求的完整数据。 但令人惊讶的是,在中间浏览器中请求另一块数据。由于字节缓冲区位置已达到缓冲区限制,因此无法提供任何进一步的数据。 我看到它是由于文件结束为空。我在cassandra中将数据保存为blob,并使用LRU缓存为我的客户端提供服务以避免大量内存占用。 我想了解safari和chrome之间的行为差​​异,我该如何解决它的问题。任何指导将不胜感激。

0 个答案:

没有答案