Hi,
IEngineService are the closest you'll get to servlets from Tapestry

This basically means there's only one instance of them - i guess it's
easy for people
to forget this and start storing state in that (only) instance like
you do with mediafile
(linkFactory is a hivemind service and webRespone is a hivemind
threaded service so they're ok)

What you need to do is fix your getlink method (it generates a link to
the page service now, why?
it needs to generate a link to itself and add all the parameters
needed to process the request when
the user eventually clicks on it) and perhaps add the mediafilename or
id as a parameter (similar to
your commented out code)

Then you need to make service read that parameter, and do the further
processing without storing
any state to the engineservice class

On Thu, May 8, 2008 at 11:25 AM,  <[EMAIL PROTECTED]> wrote:
> 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]
>
>



-- 
Andreas Andreou - [EMAIL PROTECTED] - http://blog.andyhot.gr
Tapestry / Tacos developer
Open Source / JEE Consulting

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

Reply via email to