2012-09-05 23 views
1

我需要在瀏覽器中播放視頻,我使用VLC插件向Servlet發送請求到servlet I視頻流寫入到響應,但當視頻下載,每一次我得到:在視頻下載時向HTTP響應寫入視頻流獲取錯誤:ClientAbortException:java.net.SocketException:連接重置

ClientAbortException: java.net.SocketException: Connection reset

通過FileChannel size()我可以看到視頻的尺寸越來越大,甚至是全尺寸的,但過了一段時間我仍然有錯誤。誰能幫我?

異常信息:

ClientAbortException: java.net.SocketException: Connection reset 
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:401) 
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:449) 
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349) 
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:424) 
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:413) 
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89) 
at java.nio.channels.Channels$WritableByteChannelImpl.write(Channels.java:296) 
at sun.nio.ch.FileChannelImpl.transferToArbitraryChannel(FileChannelImpl.java:465) 
at sun.nio.ch.FileChannelImpl.transferTo(FileChannelImpl.java:514) 
at com.certus.isa.server.servlet.PlayServlet.doGet(PlayServlet.java:66) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) 
at com.certus.isa.server.service.security.LoginFilter.doFilter(LoginFilter.java:61) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) 
at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) 
at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) 
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) 
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) 
at java.lang.Thread.run(Thread.java:662) 
Caused by: java.net.SocketException: Connection reset 
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:96) 
at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:726) 
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:449) 
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349) 
at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:750) 
at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118) 
at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:559) 
at org.apache.coyote.Response.doWrite(Response.java:567) 
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:396) 
... 33 more 
ClientAbortException: java.net.SocketException: Broken pipe 
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:401) 
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:449) 
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:340) 
at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:299) 
at org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:104) 
at java.nio.channels.Channels$WritableByteChannelImpl.implCloseChannel(Channels.java:307) 
at java.nio.channels.spi.AbstractInterruptibleChannel.close(AbstractInterruptibleChannel.java:97) 
at com.certus.isa.server.servlet.PlayServlet.doGet(PlayServlet.java:80) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) 
at com.certus.isa.server.service.security.LoginFilter.doFilter(LoginFilter.java:61) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) 
at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) 
at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) 
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) 
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) 
at java.lang.Thread.run(Thread.java:662) 
Caused by: java.net.SocketException: Broken pipe 
at java.net.SocketOutputStream.socketWrite0(Native Method) 
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:726) 
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:449) 
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349) 
at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:750) 
at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:118) 
at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:559) 
at org.apache.coyote.Response.doWrite(Response.java:567) 
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:396) 
... 31 more 

回答

0

的瀏覽器已經關閉,因此服務器得到了一個連接重置連接。所以你需要研究爲什麼瀏覽器關閉它。

+0

問題解決了,我必須告訴瀏覽器視頻的總長度。謝謝。 response.setHeader(「Content-Length」,totalLengthOfVideo); – Luna

+0

@Luna你應該使用'setContentLength()'。 – EJP