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" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
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" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> 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: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > --
> > John Austin <[EMAIL PROTECTED]>
> >
> > ---------------------------------------------------------------------
> > 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]
>


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

Reply via email to