> I'm still interested in hear any suggestions. I know that this is not
> strictly an S2 issue but it is related to using a Stream result type.  If
> I was writing a servlet I would just get the OutputStream and write directly
> to it, putting the burden of buffering etc. onto the container.

If you want to write directly on the OutputStream you can implement your own 
ResultType:

public class ByteContentResult implements Result,StrutsStatics
{
  public void execute( ActionInvocation invocation )
  throws Exception
  {
    ByteContentProvider bytesProvider = (ByteContentProvider) 
invocation.getAction();
    //HttpServletResponse response = 
org.apache.struts2.ServletActionContext.getResponse();
    HttpServletResponse response = 
(HttpServletResponse)invocation.getInvocationContext().get( HTTP_RESPONSE );

    response.setContentType(bytesProvider.getContentType());
    byte[] content = bytesProvider.getBytes();
    response.setContentLength( content.length );
    ServletOutputStream outstream = response.getOutputStream();
    outstream.write( content );
    outstream.flush();
  }
}

The action class has only to implement this interface:
public interface ByteContentProvider
{
  public String getContentType();
  public byte[] getBytes();
}

Then make your result known in your my-struts-default.xml:
<result-types>
  <result-type name="bytes" class="result.ByteContentResult"/>
</result-types>

/Stephan
-- 
GMX Kostenlose Spiele: Einfach online spielen und Spaß haben mit Pastry Passion!
http://games.entertainment.gmx.net/de/entertainment/games/free/puzzle/6169196

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

Reply via email to