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]