Return-Path: X-Original-To: apmail-wicket-users-archive@minotaur.apache.org Delivered-To: apmail-wicket-users-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CC3E910A2A for ; Wed, 5 Jun 2013 08:23:27 +0000 (UTC) Received: (qmail 92734 invoked by uid 500); 5 Jun 2013 08:23:26 -0000 Delivered-To: apmail-wicket-users-archive@wicket.apache.org Received: (qmail 92596 invoked by uid 500); 5 Jun 2013 08:23:26 -0000 Mailing-List: contact users-help@wicket.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@wicket.apache.org Delivered-To: mailing list users@wicket.apache.org Received: (qmail 92588 invoked by uid 99); 5 Jun 2013 08:23:25 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Jun 2013 08:23:25 +0000 X-ASF-Spam-Status: No, hits=1.7 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT,HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of solomax666@gmail.com designates 209.85.214.177 as permitted sender) Received: from [209.85.214.177] (HELO mail-ob0-f177.google.com) (209.85.214.177) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Jun 2013 08:23:17 +0000 Received: by mail-ob0-f177.google.com with SMTP id ta17so2043506obb.8 for ; Wed, 05 Jun 2013 01:22:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=wIdNV5scUZ0uv5gtD3RP0wBsMLGE4Y+AjSV4iyHd/FQ=; b=rVaE7miYxI5uC1rcR/gx7ftRJqTA++Nk+S/PFzKS4PpIg4BpOJ+tEKPbqadOlmU6Tc Mj05Keud5Pmqms4s5u31E8XrqglvVVZf/nI0zlV1l3tRHmZUCbm6Wbd6q0v3vXQ/21lJ KDxERO4GZg9+ZTbaMmZs/SZcbd3XqdEizLBH8BCxtV8oetUPHyn8VCk/API+Wd2yjlQv m56VSpwp6mG68PnDUxGL9ED/Xvw6YSIeQRCly8L9dUwO0LZc9tvPDcPSkrBuEJ/waiub HUiAKsz58iYjM9bH96ceq78sMgBdbgUMVCKzGFtL0L9z63th8bdd73hHqKBlsXczOY1v FqvA== MIME-Version: 1.0 X-Received: by 10.182.78.41 with SMTP id y9mr13920764obw.69.1370420575668; Wed, 05 Jun 2013 01:22:55 -0700 (PDT) Received: by 10.182.53.130 with HTTP; Wed, 5 Jun 2013 01:22:55 -0700 (PDT) In-Reply-To: References: Date: Wed, 5 Jun 2013 15:22:55 +0700 Message-ID: Subject: Re: ResourceReference serving video files From: Maxim Solodovnik To: users@wicket.apache.org Content-Type: multipart/alternative; boundary=047d7b2e47109b5e9804de63e781 X-Virus-Checked: Checked by ClamAV on apache.org --047d7b2e47109b5e9804de63e781 Content-Type: text/plain; charset=UTF-8 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 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 --047d7b2e47109b5e9804de63e781--