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

Reply via email to