page forward problem

i have a jsp which contains the following:

com.XML.ProcessXML processXML =new com.XML.ProcessXML();

if (template.equals("Complete Resume"))

{

processXML.CreateXSLFO("C:/Program Files/apache-tomcat-6.0.7/webapps/Experience/projectteam.xml","C:/Program Files/apache-tomcat-6.0.7/webapps/Experience/Templates/projectteam2fo.xsl","completeresumeResult.fo");

processXML.CreatePDF("completeresumeResult.fo","C:/Program Files/apache-tomcat-6.0.7/webapps/Experience/Templates/foo.pdf");

pageContext.forward("Templates/foo.pdf" );

}

the problem is caused by the pageContext.forward line (if i remove that line i get no error)

the PDF is created and once the page has errored i can navigat to the page

why am i getting this error completly confused?

org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been calledforthis response

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:565)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:426)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.lang.IllegalStateException: getOutputStream() has already been calledforthis response

org.apache.catalina.connector.Response.getWriter(Response.java:604)

org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:197)

org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)

org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)

org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:191)

org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:119)

org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:79)

org.apache.jsp.cvgeneration_jsp._jspService(cvgeneration_jsp.java:164)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:390)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.7 logs.

[3120 byte] By [h1400046a] at [2007-11-26 19:25:57]
# 1
you can not call getOutPutStream and getWriter for the same response, check whether you are calling these methods anywhere.Moreover there is some problem with forward too , you can not forward once you open your writer.
krishna_kanth83a at 2007-7-9 21:50:43 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 2

i dont understand

the methods are below, what do you suggest i change?

public void CreateXSLFO(String xmldocname, String xsltdocname, String xslfodocname) {

System.out.println("creating xsl-fo");

File xmldocument = new File(xmldocname);

File xsltdocument = new File(xsltdocname);

File xslfodocument = new File(xslfodocname);

try {

OutputStream outputstream = new java.io.FileOutputStream(xslfodocument);

TransformerFactory factory = TransformerFactory.newInstance();

//pass the xslt document

Transformer transformer = factory.newTransformer(new StreamSource(xsltdocument));

//pass the xml document

Source sourse = new StreamSource(xmldocument);

//pass the outputstream (new file)

Result result = new StreamResult(outputstream);

// transform the xslt to xsl-fo using FOP

transformer.transform(sourse, result);

}

catch (Exception e)

{

e.printStackTrace();

}

System.out.println("xslfo created");

}

public void CreatePDF(String xslfodocname, String pdfdocname) {

System.out.println("creating pdf");

File xslfodocument = new File(xslfodocname);

File pdfdocument = new File(pdfdocname);

OutputStream outputstream = null;

try {

FOUserAgent foUserAgent = fopFactory.newFOUserAgent();

outputstream = new FileOutputStream(pdfdocument);

outputstream = new BufferedOutputStream(outputstream);

//set format

Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, outputstream);

TransformerFactory factory = TransformerFactory.newInstance();

Transformer transformer = factory.newTransformer();

Source sourse = new StreamSource(xslfodocument);

Result result = new SAXResult(fop.getDefaultHandler());

System.out.println("about to transform result");

// transform the xsl-fo to pdf using FOP

transformer.transform(sourse, result);

// Result processing

FormattingResults foResults = fop.getResults();

java.util.List pageSequences = foResults.getPageSequences();

for (Iterator iterator = pageSequences.iterator(); iterator.hasNext();)

{

PageSequenceResults pageSequenceResults = (PageSequenceResults)iterator.next();

}

outputstream.close();

}

catch (Exception e)

{

e.printStackTrace();

}

System.out.println("pdf created");

}

h1400046a at 2007-7-9 21:50:43 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 3

as the streams are opened already just use

pageContext.include( "Templates/foo.pdf",true ); method instead of pageContext.forward( "Templates/foo.pdf" ); in your below code;

Hope this will works for you. best of luck.

com.XML.ProcessXML processXML = new com.XML.ProcessXML();

if (template.equals("Complete Resume"))

{

processXML.CreateXSLFO("C:/Program Files/apache-tomcat-6.0.7/webapps/Experience/projectteam.xml", "C:/Program Files/apache-tomcat-6.0.7/webapps/Experience/Templates/projectteam2fo.xsl", "completeresumeResult.fo");

processXML.CreatePDF("completeresumeResult.fo", "C:/Program Files/apache-tomcat-6.0.7/webapps/Experience/Templates/foo.pdf");

pageContext.forward( "Templates/foo.pdf" );

}

cvasu4a at 2007-7-9 21:50:44 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 4
do u know how to import a jar file in jsp and use its class... please post a reply to my post...witht he title " Adding a jar in jsp, please help...very urgent!!!!"Message was edited by: xema
xemaa at 2007-7-9 21:50:44 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 5
i changed it to pageContext.include("Templates/foo.pdf",true); but the page isnt forwarding and there is no content, but errors stopped?about the Jar files. i store them in tomcats lib directory, i cant find your post..
h1400046a at 2007-7-9 21:50:44 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 6
i have been thinking and idealy i would like the page to be opened in a new browser window maybe this would be easier?do you know how to do this?
h1400046a at 2007-7-9 21:50:44 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 7
changed it to this and it workedString redirectURL = "Templates/foo.pdf";response.sendRedirect(redirectURL);return;would still like to know how to open it in a new window tho
h1400046a at 2007-7-9 21:50:44 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 8

Hi,

I have downloaded the strutscx sample application and helped me lot in generting a PDF report and quite comfortable with that.

But we have webapplication where in we dynmically need to generate a PDF report. But the data is really huge. So I have decided to write a offline to generate many PDF reports and save it to a file system. In the (struts)webapplication when I click on that link I will read that pdf file and display/open in browser. So basically I need to have all the .pdf files in the filesystem.

Can somebody help me as to how to create and save a pdf file into filesystem using fop. Please help as this is really urgent for me.

A sample code would be really helpfull for me.

Kindly do the needfull.

WilliamSa at 2007-7-9 21:50:44 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...