Re: FOPException: FOP processor fails during load test
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
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() +
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);
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