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]