Here is the stack trace:

2008-05-07 18:14:13,375 [http-8080-Processor24] INFO  
com.company.services.MediaAsset  - Loading video file from: 
2008-05-07 18:14:13,375 [http-8080-Processor24] INFO  
com.company.services.MediaAsset  - 
file=http://192.160.25.194:8080/videostore/media/CF-00001-0002-DE.flv?page=Home&showdigits=true&autostart=true
2008-05-07 18:14:15,328 [http-8080-Processor22] ERROR 
com.company.services.MediaService  - --> file read 
error4:org.apache.catalina.connector.ClientAbortException: null
java.net.SocketException: Connection reset by peer: socket write error
        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:746)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
        at 
org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:304)
        at 
org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:991)
        at org.apache.coyote.Response.action(Response.java:182)
        at 
org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:322)
        at 
org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:293)
        at 
org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:97)
        at com.company.services.MediaService.serveImage(MediaService.java:117)
        at com.company.services.MediaService.service(MediaService.java:80)
        at $IEngineService_119c428b0a8.service($IEngineService_119c428b0a8.java)
        at 
org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:72)
        at 
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:241)
        at 
org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54)
        at 
$WebRequestServicer_119c428b06d.service($WebRequestServicer_119c428b06d.java)
        at org.trails.i18n.LocaleFilter.service(LocaleFilter.java:26)
        at 
$WebRequestServicerFilter_119c428b06b.service($WebRequestServicerFilter_119c428b06b.java)
        at 
$WebRequestServicer_119c428b06f.service($WebRequestServicer_119c428b06f.java)
        at 
$WebRequestServicer_119c428b067.service($WebRequestServicer_119c428b067.java)
        at 
org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61)
        at 
$ServletRequestServicer_119c428b04d.service($ServletRequestServicer_119c428b04d.java)
        at 
org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
        at 
$ServletRequestServicerFilter_119c428b049.service($ServletRequestServicerFilter_119c428b049.java)
        at 
$ServletRequestServicer_119c428b04f.service($ServletRequestServicer_119c428b04f.java)
        at 
org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
        at 
$ServletRequestServicerFilter_119c428b047.service($ServletRequestServicerFilter_119c428b047.java)
        at 
$ServletRequestServicer_119c428b04f.service($ServletRequestServicer_119c428b04f.java)
        at 
org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
        at 
$ServletRequestServicerFilter_119c428b04b.service($ServletRequestServicerFilter_119c428b04b.java)
        at 
$ServletRequestServicer_119c428b04f.service($ServletRequestServicer_119c428b04f.java)
        at 
$ServletRequestServicer_119c428b041.service($ServletRequestServicer_119c428b041.java)
        at 
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:126)
        at 
org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:103)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
        at 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
        at 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.trails.security.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:152)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:229)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:286)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
        at 
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:619)

2008-05-07 18:14:15,500 [http-8080-Processor25] ERROR 
com.company.services.MediaService  - --> file read 
error4:org.apache.catalina.connector.ClientAbortException: null
java.net.SocketException: Connection reset by peer: socket write error
        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:746)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
        at 
org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:304)
        at 
org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:991)
        at org.apache.coyote.Response.action(Response.java:182)
        at 
org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:322)
        at 
org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:293)
        at 
org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:97)
        at com.company.services.MediaService.serveImage(MediaService.java:117)
        at com.company.services.MediaService.service(MediaService.java:80)
        at $IEngineService_119c428b0a8.service($IEngineService_119c428b0a8.java)
        at 
org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:72)
        at 
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:241)
        at 
org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54)
        at 
$WebRequestServicer_119c428b06d.service($WebRequestServicer_119c428b06d.java)
        at org.trails.i18n.LocaleFilter.service(LocaleFilter.java:26)
        at 
$WebRequestServicerFilter_119c428b06b.service($WebRequestServicerFilter_119c428b06b.java)
        at 
$WebRequestServicer_119c428b06f.service($WebRequestServicer_119c428b06f.java)
        at 
$WebRequestServicer_119c428b067.service($WebRequestServicer_119c428b067.java)
        at 
org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61)
        at 
$ServletRequestServicer_119c428b04d.service($ServletRequestServicer_119c428b04d.java)
        at 
org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
        at 
$ServletRequestServicerFilter_119c428b049.service($ServletRequestServicerFilter_119c428b049.java)
        at 
$ServletRequestServicer_119c428b04f.service($ServletRequestServicer_119c428b04f.java)
        at 
org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
        at 
$ServletRequestServicerFilter_119c428b047.service($ServletRequestServicerFilter_119c428b047.java)
        at 
$ServletRequestServicer_119c428b04f.service($ServletRequestServicer_119c428b04f.java)
        at 
org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
        at 
$ServletRequestServicerFilter_119c428b04b.service($ServletRequestServicerFilter_119c428b04b.java)
        at 
$ServletRequestServicer_119c428b04f.service($ServletRequestServicer_119c428b04f.java)
        at 
$ServletRequestServicer_119c428b041.service($ServletRequestServicer_119c428b041.java)
        at 
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:126)
        at 
org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:103)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
        at 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
        at 
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.trails.security.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:152)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:229)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:286)
        at 
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at 
org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
        at 
org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:619)


-------- Original-Nachricht --------
> Datum: Thu, 08 May 2008 10:14:51 +0200
> Von: [EMAIL PROTECTED]
> An: "Tapestry users" <users@tapestry.apache.org>
> Betreff: Tapestry 4.1 Secure streaming of video files

> I am trying to stream flash video files in a protected way using this
> Media Service....
> 
> It works fine, but once 2 people access the same file one of the streams
> sooner or later just stops and the connection is closed....
> 
> Has anyone tried something similiar and tested the parallel acces on the
> same file?
> 
> 
> package com.company.services;
> 
> import java.io.BufferedOutputStream;
> import java.io.File;
> import java.io.FileInputStream;
> import java.io.FileNotFoundException;
> import java.io.IOException;
> import java.io.RandomAccessFile;
> import java.util.HashMap;
> import java.util.Map;
> 
> import javax.activation.MimetypesFileTypeMap;
> 
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> import org.apache.hivemind.util.Defense;
> import org.apache.tapestry.IComponent;
> import org.apache.tapestry.IPage;
> import org.apache.tapestry.IRequestCycle;
> import org.apache.tapestry.engine.IEngineService;
> import org.apache.tapestry.engine.ILink;
> import org.apache.tapestry.services.LinkFactory;
> import org.apache.tapestry.services.ServiceConstants;
> import org.apache.tapestry.util.ContentType;
> import org.apache.tapestry.web.WebResponse;
> 
> import com.fivecast.pages.AdminHomeConfig;
> import com.fivecast.pages.Home;
> import com.fivecast.pages.Video;
> 
> public class MediaService implements IEngineService {
>       public static final String SERVICE_NAME = "media";
>       
>       private static final Log LOG = LogFactory.getLog(MediaService.class);
>       
>       private LinkFactory _linkFactory;
>       private WebResponse _response;
>       private File mediafile = null;
> 
>       public ILink getLink(boolean post, Object parameter) {
>               Defense.isAssignable(parameter, IComponent.class, "parameter");
>               IComponent component = (IComponent) parameter;
>               IPage page = component.getPage();
>               Map<String, String> parameters = new HashMap<String, String>();
>               parameters.put(ServiceConstants.SERVICE, getName());
>               parameters.put(ServiceConstants.PAGE, page.getPageName());
>               parameters.put(ServiceConstants.COMPONENT, null);
>               if(page.getPageName().equals("Home"))
>               {
>                       Home p = (Home)page;
>                       mediafile = p.getFile();
>               }
>               else if(page.getPageName().equals("Video"))
>               {
>                       Video p = (Video)page;
>                       mediafile = p.getFile();
>               }
>               else if(page.getPageName().equals("AdminHomeConfig"))
>               {
>                       AdminHomeConfig p = (AdminHomeConfig)page;
>                       mediafile = p.getFile();
>               }
>               if(mediafile != null)
>               {
>                       mediafile.setReadOnly();
>                       parameters.put("mediafilename", mediafile.getName());
>               }
> //            parameters.put("mediafilename", mediafile.getName().substring(0,
> mediafile.getName().length()-4));
>               return _linkFactory.constructLink(this, false, parameters, 
> true);
>       }
> 
>       public void service(IRequestCycle cycle) throws IOException {
>               try {
>                       cycle.getAbsoluteURL(SERVICE_NAME);
>                       serveImage();
>               } catch (ClassCastException ex) {
>                       LOG.error("--> ClassCastException:" + ex);
>               } catch (Throwable ex) {
>                       LOG.error("--> Throwable:" + ex);
>                       try
>                       {
>                               output.close();
>                               raf.close();
>                               LOG.info("--> stream close.");
>                       } catch(Exception e)
>                       {
>                               LOG.error("--> stream couldn't close.");
>                       }
>               }
>               return;
>       }
>       
>       private BufferedOutputStream output;
> //    BufferedInputStream inputStream;
>       private RandomAccessFile raf;
> 
>       
>       private void serveImage() throws IOException {
>               output = new BufferedOutputStream(_response.getOutputStream(new
> ContentType(getMimeType())));
>               synchronized (this)
>               {
>                       try
>                       {
>                               raf = new RandomAccessFile(mediafile, "r");
>                               if(raf != null)
>                               {
>                                       byte[] byteArray=new byte[1024*300];
>                                       int numRead = 0;
>                                       while ((numRead = raf.read(byteArray)) 
> != -1)
>                                       {
>                                               output.write(byteArray, 0, 
> numRead);
>                                               output.flush();
>                                       }
>                               }
>                       } catch (FileNotFoundException e)
>                       {
>                               e.printStackTrace();
>                               LOG.error("--> file read error:" +  e);
>                       }
>                       catch (IllegalArgumentException ex){
>                               ex.printStackTrace();
>                               LOG.error("--> file read error:" +  
> ex.getMessage());
>                       }
>                       catch (NullPointerException ex){
>                               LOG.error("--> file read error:" +  
> ex.getMessage());
>                               
>                       }
>                       
>                       catch (IOException ex){
>                               LOG.error("--> file read error:" +  
> ex.getMessage());
>                       }
>                       finally {
>                               output.close();
>                               raf.close();
>                       }
>                       
>                       output.close();
>                       raf.close();
>               }
>       }
> /*    
>       private void serveImage() throws IOException {
>               output = new BufferedOutputStream(_response.getOutputStream(new
> ContentType(getMimeType())));
>               synchronized (this)
>               {
>                       inputStream = new BufferedInputStream(getMediaFile());
>                       if(inputStream != null)
>                       {
>                               byte[] byteArray=new byte[1024*300];
>                               int numRead = 0;
>                               while ((numRead = inputStream.read(byteArray)) 
> != -1)
>                               {
>                                       output.write(byteArray, 0, numRead);
>                                       output.flush();
>                               }
>                       }
>                       output.close();
>                       inputStream.close();
>               }
>               
>       }
> */    
>       public String getName() {
>               return SERVICE_NAME;
>       }
> 
>       public void setLinkFactory(LinkFactory linkFactory) {
>               _linkFactory = linkFactory;
>       }
> 
>       public void setResponse(WebResponse response) {
>               _response = response;
>       }
>       
>       private String getMimeType() {
>               try {
>                       MimetypesFileTypeMap map = new MimetypesFileTypeMap();
>                       return map.getContentType(mediafile);
>               } catch (Exception e) {
>                       return null;
>               }
>       }
>       
>       public FileInputStream getMediaFile() {
>               try {
>                       if (mediafile != null) {
>                               FileInputStream streamer = new 
> FileInputStream(mediafile);
>                               return streamer;
>                       }
>               } catch (FileNotFoundException e) {
>               }
>               return null;
>       }
> }
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to