You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by Subbareddy Kalakota <ka...@Basit.COM> on 2004/01/27 20:44:52 UTC
FOPException: FOP processor fails during load test
Hi,
I am using FOP to generate PDF reports from servlet. I am generating and
storing the pdf report into file and serving that file so that I am avoiding
repeating calls from browser. every thing going fine, I am able to generate
pdf reports in development env(windows) and testing (AIX) but when a load
test is performed on application(AIX, Websphere 5), pdf reports are failing
after some time(like 20 users concurrently accessing the reports ) but all
other functions of applicaiton running fine. Here is the exception I am
getting and followed by the pdf code segment that causing this exception.
Please let me know if I am doing wrong any where.
I am guessing ,Driver has some problem, like hanging or not getting
destroyed.
Thanks
subbareddy.
org.apache.fop.apps.FOPException: root must be root element
at
org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java(Compiled
Code))
at
org.apache.xalan.transformer.ResultTreeHandler.flushElem(ResultTreeHandler.j
ava(Compiled Code))
at
org.apache.xalan.transformer.ResultTreeHandler.flushPending(ResultTreeHandle
r.java(Compiled Code))
at
org.apache.xalan.transformer.ResultTreeHandler.endElement(ResultTreeHandler.
java(Compiled Code))
at
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java(
Compiled Code))
at
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApp
lyTemplates.java(Compiled Code))
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav
a(Compiled Code))
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
erImpl.java(Compiled Code))
at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Transformer
Impl.java:2081)
at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.j
ava:1137)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
600)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
1054)
at
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
1032)
at
com.verizon.wbtt.components.servlet.controller.ControllerServlet.outputXML2P
dfFile(ControllerServlet.java(Com
piled Code))
at
com.verizon.wbtt.components.servlet.controller.ControllerServlet.doProcess(C
ontrollerServlet.java(Compiled Co
de))
********************** Code Segment *******************
public class ControllerServlet extends HttpServlet {
private HashMap eventMappings;
private TransformerFactory factory =null;
Driver driver=null;
private org.apache.avalon.framework.logger.Logger log= new ConsoleLogger
(ConsoleLogger.LEVEL_FATAL);
public void init() {
String eventMappingsURL = null;
try{
factory=TransformerFactory.newInstance();
MessageHandler.setScreenLogger(log);
driver = new Driver();
driver.setLogger(log);
driver.setRenderer(Driver.RENDER_PDF);
}
protected void outputXML2PdfFile (Source xml, String xslt,
HttpServletRequest request, HttpServletResponse response) throws
javax.servlet.ServletException, IOException, FOPException,
TransformerException {
String id = getServletConfig().getServletContext().getRealPath("/");
org.apache.fop.configuration.Configuration.put("baseDir", id);
HttpSession session = request.getSession();
CacheDir pdfDir = (CacheDir) session.getAttribute("__PDFFILEDIR__");
if (pdfDir == null) {
CacheDir tempDir = (CacheDir)
getServletContext().getAttribute("__TEMPFILEDIR__");
if (tempDir == null) {
//tempDir = new CacheDir (WbtsPdfDir, "temp");
tempDir = new CacheDir (id, "temp");
tempDir.mkdir();
getServletContext().setAttribute("__TEMPFILEDIR__", tempDir);
}
pdfDir = new CacheDir (tempDir, session.getId());
pdfDir.mkdir();
session.setAttribute("__PDFFILEDIR__", pdfDir);
}
// end of cache directory
String pdfName = String.valueOf(System.currentTimeMillis()) + ".pdf";
OutputStream out = new FileOutputStream(new File(pdfDir, pdfName));
driver.setOutputStream (out);
TransformerFactory factory = TransformerFactory.newInstance();
factory.setURIResolver(defaultURIResolver());
StreamSource slt = new
StreamSource(getServletConfig().getServletContext().getResourceAsStream(xslt
));
slt.setSystemId(id);
Transformer transformer = factory.newTransformer(slt);
SAXResult res = new SAXResult(driver.getContentHandler());
res.setSystemId(id);
xml.setSystemId(id);
transformer.transform(xml, res);
out.flush(); out.close();
Logger.trace(Logger.SERVLET_LOGGING,"ControllerServlet().outputXML2PdfFile()
-- Forwarding to pdf file :"+File.separator + pdfDir.getContextName() +
File.separator + pdfName);
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(File.separator +
pdfDir.getContextName() + File.separator + pdfName);
dispatcher.forward(request, response);
//response.sendRedirect (File.separator + pdfDir.getContextName() +
File.separator + pdfName);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-user-help@xml.apache.org
Re: FOPException: FOP processor fails during load test
Posted by Subbareddy Kalakota <ka...@Basit.COM>.
Hi John,
I made the Driver and factory variables as method level, its works fine now.
so it might me be thread safty issue.
Thanks for identifying that.
Subbaredd.
----- Original Message -----
From: "Subbareddy Kalakota" <ka...@Basit.COM>
To: <fo...@xml.apache.org>
Sent: Tuesday, January 27, 2004 4:01 PM
Subject: Re: FOPException: FOP processor fails during load test
> John,
> Thanks for the reply. I try making the Driver at method level and see what
> would be the out come. I also made the log level to fatal, I set it to
> warning level, it may through out some more info.
>
> Thanks,
> Subbareddy.
> ----- Original Message -----
> From: "John Austin" <jw...@sympatico.ca>
> To: <fo...@xml.apache.org>
> Sent: Tuesday, January 27, 2004 3:13 PM
> Subject: Re: FOPException: FOP processor fails during load test
>
>
> > On Tue, 2004-01-27 at 16:14, Subbareddy Kalakota wrote:
> >
> > Have replied to Subbareddy off-line to the effect that his
> > problem might be one of thread-safety.
> >
> > He has several class variables (eventMappings, factory,
> > driver and log) that must be thread-safe in order for the
> > servlet to work.
> >
> > I suspect that the Driver class isn't thread-safe, leading to
> > his problem.
> >
> > > Hi,
> > > I am using FOP to generate PDF reports from servlet. I am generating
and
> > > storing the pdf report into file and serving that file so that I am
> avoiding
> > > repeating calls from browser. every thing going fine, I am able to
> generate
> > > pdf reports in development env(windows) and testing (AIX) but when a
> load
> > > test is performed on application(AIX, Websphere 5), pdf reports are
> failing
> > > after some time(like 20 users concurrently accessing the reports ) but
> all
> > > other functions of applicaiton running fine. Here is the exception I
am
> > > getting and followed by the pdf code segment that causing this
> exception.
> > >
> > > Please let me know if I am doing wrong any where.
> > >
> > > I am guessing ,Driver has some problem, like hanging or not getting
> > > destroyed.
> > >
> > > Thanks
> > > subbareddy.
> > >
> > >
> > > org.apache.fop.apps.FOPException: root must be root element
> > > at
> > >
org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java(Compiled
> > > Code))
> > > at
> > >
>
org.apache.xalan.transformer.ResultTreeHandler.flushElem(ResultTreeHandler.j
> > > ava(Compiled Code))
> > > at
> > >
>
org.apache.xalan.transformer.ResultTreeHandler.flushPending(ResultTreeHandle
> > > r.java(Compiled Code))
> > > at
> > >
>
org.apache.xalan.transformer.ResultTreeHandler.endElement(ResultTreeHandler.
> > > java(Compiled Code))
> > > at
> > >
>
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java(
> > > Compiled Code))
> > > at
> > >
>
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApp
> > > lyTemplates.java(Compiled Code))
> > > at
> > >
>
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav
> > > a(Compiled Code))
> > > at
> > >
>
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
> > > erImpl.java(Compiled Code))
> > > at
> > >
>
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Transformer
> > > Impl.java:2081)
> > > at
> > >
>
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.j
> > > ava:1137)
> > > at
> > >
>
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
> > > 600)
> > > at
> > >
>
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
> > > 1054)
> > > at
> > >
>
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
> > > 1032)
> > > at
> > >
>
com.verizon.wbtt.components.servlet.controller.ControllerServlet.outputXML2P
> > > dfFile(ControllerServlet.java(Com
> > > piled Code))
> > > at
> > >
>
com.verizon.wbtt.components.servlet.controller.ControllerServlet.doProcess(C
> > > ontrollerServlet.java(Compiled Co
> > > de))
> > >
> > >
> > > ********************** Code Segment *******************
> > >
> > >
> > > public class ControllerServlet extends HttpServlet {
> > >
> > > private HashMap eventMappings;
> > > private TransformerFactory factory =null;
> > > Driver driver=null;
> > > private org.apache.avalon.framework.logger.Logger log= new
> ConsoleLogger
> > > (ConsoleLogger.LEVEL_FATAL);
> > >
> > > public void init() {
> > > String eventMappingsURL = null;
> > > try{
> > >
> > > factory=TransformerFactory.newInstance();
> > > MessageHandler.setScreenLogger(log);
> > > driver = new Driver();
> > > driver.setLogger(log);
> > > driver.setRenderer(Driver.RENDER_PDF);
> > > }
> > > protected void outputXML2PdfFile (Source xml, String xslt,
> > > HttpServletRequest request, HttpServletResponse response) throws
> > > javax.servlet.ServletException, IOException, FOPException,
> > > TransformerException {
> > > String id = getServletConfig().getServletContext().getRealPath("/");
> > > org.apache.fop.configuration.Configuration.put("baseDir", id);
> > >
> > > HttpSession session = request.getSession();
> > > CacheDir pdfDir = (CacheDir) session.getAttribute("__PDFFILEDIR__");
> > >
> > > if (pdfDir == null) {
> > > CacheDir tempDir = (CacheDir)
> > > getServletContext().getAttribute("__TEMPFILEDIR__");
> > > if (tempDir == null) {
> > > //tempDir = new CacheDir (WbtsPdfDir, "temp");
> > > tempDir = new CacheDir (id, "temp");
> > > tempDir.mkdir();
> > > getServletContext().setAttribute("__TEMPFILEDIR__", tempDir);
> > > }
> > >
> > > pdfDir = new CacheDir (tempDir, session.getId());
> > > pdfDir.mkdir();
> > > session.setAttribute("__PDFFILEDIR__", pdfDir);
> > > }
> > > // end of cache directory
> > >
> > > String pdfName = String.valueOf(System.currentTimeMillis()) +
".pdf";
> > > OutputStream out = new FileOutputStream(new File(pdfDir, pdfName));
> > > driver.setOutputStream (out);
> > >
> > > TransformerFactory factory = TransformerFactory.newInstance();
> > > factory.setURIResolver(defaultURIResolver());
> > > StreamSource slt = new
> > >
>
StreamSource(getServletConfig().getServletContext().getResourceAsStream(xslt
> > > ));
> > > slt.setSystemId(id);
> > > Transformer transformer = factory.newTransformer(slt);
> > >
> > > SAXResult res = new SAXResult(driver.getContentHandler());
> > > res.setSystemId(id);
> > > xml.setSystemId(id);
> > > transformer.transform(xml, res);
> > > out.flush(); out.close();
> > >
> > >
>
Logger.trace(Logger.SERVLET_LOGGING,"ControllerServlet().outputXML2PdfFile()
> > > -- Forwarding to pdf file :"+File.separator + pdfDir.getContextName()
+
> > > File.separator + pdfName);
> > > RequestDispatcher dispatcher =
> > > getServletContext().getRequestDispatcher(File.separator +
> > > pdfDir.getContextName() + File.separator + pdfName);
> > > dispatcher.forward(request, response);
> > >
> > >
> > > //response.sendRedirect (File.separator + pdfDir.getContextName() +
> > > File.separator + pdfName);
> > > }
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
> > > For additional commands, e-mail: fop-user-help@xml.apache.org
> > --
> > John Austin <jw...@sympatico.ca>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
> > For additional commands, e-mail: fop-user-help@xml.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
> For additional commands, e-mail: fop-user-help@xml.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-user-help@xml.apache.org
Re: FOPException: FOP processor fails during load test
Posted by Subbareddy Kalakota <ka...@Basit.COM>.
John,
Thanks for the reply. I try making the Driver at method level and see what
would be the out come. I also made the log level to fatal, I set it to
warning level, it may through out some more info.
Thanks,
Subbareddy.
----- Original Message -----
From: "John Austin" <jw...@sympatico.ca>
To: <fo...@xml.apache.org>
Sent: Tuesday, January 27, 2004 3:13 PM
Subject: Re: FOPException: FOP processor fails during load test
> On Tue, 2004-01-27 at 16:14, Subbareddy Kalakota wrote:
>
> Have replied to Subbareddy off-line to the effect that his
> problem might be one of thread-safety.
>
> He has several class variables (eventMappings, factory,
> driver and log) that must be thread-safe in order for the
> servlet to work.
>
> I suspect that the Driver class isn't thread-safe, leading to
> his problem.
>
> > Hi,
> > I am using FOP to generate PDF reports from servlet. I am generating and
> > storing the pdf report into file and serving that file so that I am
avoiding
> > repeating calls from browser. every thing going fine, I am able to
generate
> > pdf reports in development env(windows) and testing (AIX) but when a
load
> > test is performed on application(AIX, Websphere 5), pdf reports are
failing
> > after some time(like 20 users concurrently accessing the reports ) but
all
> > other functions of applicaiton running fine. Here is the exception I am
> > getting and followed by the pdf code segment that causing this
exception.
> >
> > Please let me know if I am doing wrong any where.
> >
> > I am guessing ,Driver has some problem, like hanging or not getting
> > destroyed.
> >
> > Thanks
> > subbareddy.
> >
> >
> > org.apache.fop.apps.FOPException: root must be root element
> > at
> > org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java(Compiled
> > Code))
> > at
> >
org.apache.xalan.transformer.ResultTreeHandler.flushElem(ResultTreeHandler.j
> > ava(Compiled Code))
> > at
> >
org.apache.xalan.transformer.ResultTreeHandler.flushPending(ResultTreeHandle
> > r.java(Compiled Code))
> > at
> >
org.apache.xalan.transformer.ResultTreeHandler.endElement(ResultTreeHandler.
> > java(Compiled Code))
> > at
> >
org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java(
> > Compiled Code))
> > at
> >
org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApp
> > lyTemplates.java(Compiled Code))
> > at
> >
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav
> > a(Compiled Code))
> > at
> >
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
> > erImpl.java(Compiled Code))
> > at
> >
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Transformer
> > Impl.java:2081)
> > at
> >
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.j
> > ava:1137)
> > at
> >
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
> > 600)
> > at
> >
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
> > 1054)
> > at
> >
org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
> > 1032)
> > at
> >
com.verizon.wbtt.components.servlet.controller.ControllerServlet.outputXML2P
> > dfFile(ControllerServlet.java(Com
> > piled Code))
> > at
> >
com.verizon.wbtt.components.servlet.controller.ControllerServlet.doProcess(C
> > ontrollerServlet.java(Compiled Co
> > de))
> >
> >
> > ********************** Code Segment *******************
> >
> >
> > public class ControllerServlet extends HttpServlet {
> >
> > private HashMap eventMappings;
> > private TransformerFactory factory =null;
> > Driver driver=null;
> > private org.apache.avalon.framework.logger.Logger log= new
ConsoleLogger
> > (ConsoleLogger.LEVEL_FATAL);
> >
> > public void init() {
> > String eventMappingsURL = null;
> > try{
> >
> > factory=TransformerFactory.newInstance();
> > MessageHandler.setScreenLogger(log);
> > driver = new Driver();
> > driver.setLogger(log);
> > driver.setRenderer(Driver.RENDER_PDF);
> > }
> > protected void outputXML2PdfFile (Source xml, String xslt,
> > HttpServletRequest request, HttpServletResponse response) throws
> > javax.servlet.ServletException, IOException, FOPException,
> > TransformerException {
> > String id = getServletConfig().getServletContext().getRealPath("/");
> > org.apache.fop.configuration.Configuration.put("baseDir", id);
> >
> > HttpSession session = request.getSession();
> > CacheDir pdfDir = (CacheDir) session.getAttribute("__PDFFILEDIR__");
> >
> > if (pdfDir == null) {
> > CacheDir tempDir = (CacheDir)
> > getServletContext().getAttribute("__TEMPFILEDIR__");
> > if (tempDir == null) {
> > //tempDir = new CacheDir (WbtsPdfDir, "temp");
> > tempDir = new CacheDir (id, "temp");
> > tempDir.mkdir();
> > getServletContext().setAttribute("__TEMPFILEDIR__", tempDir);
> > }
> >
> > pdfDir = new CacheDir (tempDir, session.getId());
> > pdfDir.mkdir();
> > session.setAttribute("__PDFFILEDIR__", pdfDir);
> > }
> > // end of cache directory
> >
> > String pdfName = String.valueOf(System.currentTimeMillis()) + ".pdf";
> > OutputStream out = new FileOutputStream(new File(pdfDir, pdfName));
> > driver.setOutputStream (out);
> >
> > TransformerFactory factory = TransformerFactory.newInstance();
> > factory.setURIResolver(defaultURIResolver());
> > StreamSource slt = new
> >
StreamSource(getServletConfig().getServletContext().getResourceAsStream(xslt
> > ));
> > slt.setSystemId(id);
> > Transformer transformer = factory.newTransformer(slt);
> >
> > SAXResult res = new SAXResult(driver.getContentHandler());
> > res.setSystemId(id);
> > xml.setSystemId(id);
> > transformer.transform(xml, res);
> > out.flush(); out.close();
> >
> >
Logger.trace(Logger.SERVLET_LOGGING,"ControllerServlet().outputXML2PdfFile()
> > -- Forwarding to pdf file :"+File.separator + pdfDir.getContextName() +
> > File.separator + pdfName);
> > RequestDispatcher dispatcher =
> > getServletContext().getRequestDispatcher(File.separator +
> > pdfDir.getContextName() + File.separator + pdfName);
> > dispatcher.forward(request, response);
> >
> >
> > //response.sendRedirect (File.separator + pdfDir.getContextName() +
> > File.separator + pdfName);
> > }
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
> > For additional commands, e-mail: fop-user-help@xml.apache.org
> --
> John Austin <jw...@sympatico.ca>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
> For additional commands, e-mail: fop-user-help@xml.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-user-help@xml.apache.org
Re: FOPException: FOP processor fails during load test
Posted by John Austin <jw...@sympatico.ca>.
On Tue, 2004-01-27 at 16:14, Subbareddy Kalakota wrote:
Have replied to Subbareddy off-line to the effect that his
problem might be one of thread-safety.
He has several class variables (eventMappings, factory,
driver and log) that must be thread-safe in order for the
servlet to work.
I suspect that the Driver class isn't thread-safe, leading to
his problem.
> Hi,
> I am using FOP to generate PDF reports from servlet. I am generating and
> storing the pdf report into file and serving that file so that I am avoiding
> repeating calls from browser. every thing going fine, I am able to generate
> pdf reports in development env(windows) and testing (AIX) but when a load
> test is performed on application(AIX, Websphere 5), pdf reports are failing
> after some time(like 20 users concurrently accessing the reports ) but all
> other functions of applicaiton running fine. Here is the exception I am
> getting and followed by the pdf code segment that causing this exception.
>
> Please let me know if I am doing wrong any where.
>
> I am guessing ,Driver has some problem, like hanging or not getting
> destroyed.
>
> Thanks
> subbareddy.
>
>
> org.apache.fop.apps.FOPException: root must be root element
> at
> org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java(Compiled
> Code))
> at
> org.apache.xalan.transformer.ResultTreeHandler.flushElem(ResultTreeHandler.j
> ava(Compiled Code))
> at
> org.apache.xalan.transformer.ResultTreeHandler.flushPending(ResultTreeHandle
> r.java(Compiled Code))
> at
> org.apache.xalan.transformer.ResultTreeHandler.endElement(ResultTreeHandler.
> java(Compiled Code))
> at
> org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java(
> Compiled Code))
> at
> org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApp
> lyTemplates.java(Compiled Code))
> at
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav
> a(Compiled Code))
> at
> org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
> erImpl.java(Compiled Code))
> at
> org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Transformer
> Impl.java:2081)
> at
> org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.j
> ava:1137)
> at
> org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
> 600)
> at
> org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
> 1054)
> at
> org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
> 1032)
> at
> com.verizon.wbtt.components.servlet.controller.ControllerServlet.outputXML2P
> dfFile(ControllerServlet.java(Com
> piled Code))
> at
> com.verizon.wbtt.components.servlet.controller.ControllerServlet.doProcess(C
> ontrollerServlet.java(Compiled Co
> de))
>
>
> ********************** Code Segment *******************
>
>
> public class ControllerServlet extends HttpServlet {
>
> private HashMap eventMappings;
> private TransformerFactory factory =null;
> Driver driver=null;
> private org.apache.avalon.framework.logger.Logger log= new ConsoleLogger
> (ConsoleLogger.LEVEL_FATAL);
>
> public void init() {
> String eventMappingsURL = null;
> try{
>
> factory=TransformerFactory.newInstance();
> MessageHandler.setScreenLogger(log);
> driver = new Driver();
> driver.setLogger(log);
> driver.setRenderer(Driver.RENDER_PDF);
> }
> protected void outputXML2PdfFile (Source xml, String xslt,
> HttpServletRequest request, HttpServletResponse response) throws
> javax.servlet.ServletException, IOException, FOPException,
> TransformerException {
> String id = getServletConfig().getServletContext().getRealPath("/");
> org.apache.fop.configuration.Configuration.put("baseDir", id);
>
> HttpSession session = request.getSession();
> CacheDir pdfDir = (CacheDir) session.getAttribute("__PDFFILEDIR__");
>
> if (pdfDir == null) {
> CacheDir tempDir = (CacheDir)
> getServletContext().getAttribute("__TEMPFILEDIR__");
> if (tempDir == null) {
> //tempDir = new CacheDir (WbtsPdfDir, "temp");
> tempDir = new CacheDir (id, "temp");
> tempDir.mkdir();
> getServletContext().setAttribute("__TEMPFILEDIR__", tempDir);
> }
>
> pdfDir = new CacheDir (tempDir, session.getId());
> pdfDir.mkdir();
> session.setAttribute("__PDFFILEDIR__", pdfDir);
> }
> // end of cache directory
>
> String pdfName = String.valueOf(System.currentTimeMillis()) + ".pdf";
> OutputStream out = new FileOutputStream(new File(pdfDir, pdfName));
> driver.setOutputStream (out);
>
> TransformerFactory factory = TransformerFactory.newInstance();
> factory.setURIResolver(defaultURIResolver());
> StreamSource slt = new
> StreamSource(getServletConfig().getServletContext().getResourceAsStream(xslt
> ));
> slt.setSystemId(id);
> Transformer transformer = factory.newTransformer(slt);
>
> SAXResult res = new SAXResult(driver.getContentHandler());
> res.setSystemId(id);
> xml.setSystemId(id);
> transformer.transform(xml, res);
> out.flush(); out.close();
>
> Logger.trace(Logger.SERVLET_LOGGING,"ControllerServlet().outputXML2PdfFile()
> -- Forwarding to pdf file :"+File.separator + pdfDir.getContextName() +
> File.separator + pdfName);
> RequestDispatcher dispatcher =
> getServletContext().getRequestDispatcher(File.separator +
> pdfDir.getContextName() + File.separator + pdfName);
> dispatcher.forward(request, response);
>
>
> //response.sendRedirect (File.separator + pdfDir.getContextName() +
> File.separator + pdfName);
> }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
> For additional commands, e-mail: fop-user-help@xml.apache.org
--
John Austin <jw...@sympatico.ca>
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-user-help@xml.apache.org