I've not used the wrapper class before, but don't you need to set the
response type before you instantiate the PrintWriter?

Mark

----- Original Message -----
From: "Jay Wright" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, January 16, 2002 7:00 PM
Subject: HttpServletResponseWrapper error


> I have a servlet which uses a HttpServletResponseWrapper to wrap a
response,
> write data to a file, then eventually forwards to a jsp to display the
> typical "thank you" page.
>
> The problem is that when I wrap the response, I "commit" the response
object
> and can not forward to a thank you page.  I catch a
> "java.lang.IllegalStateException: Cannot forward after response has been
> committed".
>
> I need to avoid this.   The templates (1 thru 3) are all JavaServer Pages
> whose output (HTML) is intercepted and written to file by the
> MyServletResponse wrapper.  How do I do this without "committing" the
> response object.  I could find no way of duplicating or cloning the object
> before passing it to MyServletResponse's constructor.  Nor could I close
the
> ServletOutputStreams.  Any ideas?  This worked wonderfully on Resin, but
not
> Tomcat 4.0.1.  I need to use Tomcat.
>
> THE SERVLET CODE:
>
>             MyServletResponse wrapper1 = new MyServletResponse (response,
> "1_content.txt");
>             MyServletResponse wrapper2 = new MyServletResponse (response,
> "2_content.txt");
>             MyServletResponse wrapper3 = new MyServletResponse (response,
> "3_content.txt");
>
>             // HTML
>             rd = request.getRequestDispatcher(template1);
>             rd.include(request, wrapper1);
>             wrapper1.close();
>
>             // AOL
>             rd = request.getRequestDispatcher(template2);
>             rd.include(request, wrapper2 );
>             wrapper2 .close();
>
>             // TEXT
>             rd = request.getRequestDispatcher(template3);
>             rd.include(request, wrapper3 );
>             wrapper3 .close();
>
>
>
request.getRequestDispatcher(getScreenFlowManager().getTemplate(locale)).for
> ward(request, response);
>
> MY WRAPPER CLASS:
>
> public class MyServletResponse extends HttpServletResponseWrapper {
>
>     private PrintWriter printWriter;
>     private ServletOutputStream servletOutputStream;
>
>         /**
>          * Constructor
>          */
>     public MyServletResponse (HttpServletResponse response, String
filename)
> throws java.io.IOException {
>         super(response);
>       servletOutputStream = response.getOutputStream();
>       File file = new File(filename);
>       String fileCreated = file.toString();
>         printWriter = new PrintWriter(new BufferedWriter(new
> FileWriter(fileCreated)));
>     }
>
>     public ServletOutputStream getOutputStream() throws
java.io.IOException
> {
>         return servletOutputStream;
>     }
>
>     public void setOutputStream(ServletOutputStream sos) throws
> java.io.IOException {
>         servletOutputStream = sos;
>     }
>
>     public PrintWriter getWriter() throws java.io.IOException {
>         return printWriter;
>     }
>
>     public void close() {
>         this.printWriter.close();
>     }
> }
>
>
___________________________________________________________________________
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> of the message "signoff SERVLET-INTEREST".
>
> Archives: http://archives.java.sun.com/archives/servlet-interest.html
> Resources: http://java.sun.com/products/servlet/external-resources.html
> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
>
>

___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".

Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html

Reply via email to