Hello All, I performed tcpdump of "regular" Tomcat response to the video file and "wicket" response to video file and found couple of differences:
Tomcat sets following additional headers: Accept-Ranges ETag and seems to be able to serve various ranges setting: Content-Range header Can it be the cause of my issue? Is it possible to create ResourceReference with "Content-Range" support? Thanks in advance On Tue, Jun 4, 2013 at 12:55 PM, Maxim Solodovnik <solomax...@gmail.com>wrote: > Hello All, > > I have weird problem: > 1) wicket 6.8.0 > 2) resources are mounted in Application [1] using mountResource > 3) video files are viewable in IE, Chrome, FF, Safari (iMac) > 4) I got huge stack trace while accessing the files using iPad (Safari, > latest iOS) [3] > > The code of resource references can be found at [2] > > Mp4 file served by Tomcat itself displayed on iPad with no issues. > > Can anyone please help me to find out what is wrong with my Resource > references? Maybe some headers should be set? > > [1] > https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java > [2] > https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java > > https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/RecordingResourceReference.java > > [3] > DEBUG 06-04 12:43:28.897 ServletWebRequest.java 6865150 202 > org.apache.wicket.protocol.http.servlet.ServletWebRequest > [http-bio-0.0.0.0-5080-exec-6] - Calculating context relative path from: > context path '/openmeetings', filterPrefix '', uri > '/openmeetings/recordings/mp4/69' > ERROR 06-04 12:43:29.355 DefaultExceptionMapper.java 6865608 114 > org.apache.wicket.DefaultExceptionMapper [http-bio-0.0.0.0-5080-exec-6] - > Connection lost, give up responding. > org.apache.wicket.protocol.http.servlet.ResponseIOException: > ClientAbortException: java.net.SocketException: Broken pipe > at > org.apache.wicket.protocol.http.servlet.ServletWebResponse.write(ServletWebResponse.java:139) > ~[wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.protocol.http.HeaderBufferingWebResponse.write(HeaderBufferingWebResponse.java:191) > ~[wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.Response$StreamAdapter.write(Response.java:148) > ~[wicket-request-jar-6.8.0.jar:6.8.0] > at org.apache.wicket.util.io.Streams.copy(Streams.java:109) > ~[wicket-util-jar-6.8.0.jar:6.8.0] > at org.apache.wicket.util.io.Streams.copy(Streams.java:76) > ~[wicket-util-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.resource.AbstractResource$WriteCallback.writeStream(AbstractResource.java:707) > ~[wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.resource.ResourceStreamResource$2.writeData(ResourceStreamResource.java:207) > ~[wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.resource.AbstractResource.respond(AbstractResource.java:528) > ~[wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.handler.resource.ResourceRequestHandler.respond(ResourceRequestHandler.java:75) > ~[wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler.respond(ResourceReferenceRequestHandler.java:108) > ~[wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:861) > ~[wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) > ~[wicket-request-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261) > [wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218) > [wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289) > [wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.protocol.ws.AbstractUpgradeFilter.processRequestCycle(AbstractUpgradeFilter.java:59) > [wicket-native-websocket-core-jar-0.9.jar:0.9] > at > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201) > [wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282) > [wicket-core-jar-6.8.0.jar:6.8.0] > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.red5.logging.LoggerContextFilter.doFilter(LoggerContextFilter.java:77) > [red5-server.jar:na] > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) > [tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > [na:1.6.0_35] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > [na:1.6.0_35] > at java.lang.Thread.run(Thread.java:662) [na:1.6.0_35] > Caused by: org.apache.catalina.connector.ClientAbortException: null > at > org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:388) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:462) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:413) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:401) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.wicket.protocol.http.servlet.ServletWebResponse.write(ServletWebResponse.java:135) > ~[wicket-core-jar-6.8.0.jar:6.8.0] > ... 35 common frames omitted > Caused by: java.net.SocketException: Broken pipe > at java.net.SocketOutputStream.socketWrite0(Native Method) ~[na:1.6.0_35] > at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) > ~[na:1.6.0_35] > at java.net.SocketOutputStream.write(SocketOutputStream.java:136) > ~[na:1.6.0_35] > at > org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:462) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:84) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at org.apache.coyote.Response.doWrite(Response.java:505) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > at > org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:383) > ~[tomcat-embed-core-jar-7.0.34.jar:7.0.34] > ... 41 common frames omitted > > > -- > WBR > Maxim aka solomax > -- WBR Maxim aka solomax