We are using FOP 0.94 with Tomcat 5.5.26 and are experiencing a problem where PDF generation works until the web application is re-deployed (using "hot" deployment via the Tomcat manager application).
Because more than one application uses FOP, we deployed the FOP jars (and its dependencies) into Tomcat's /shared/lib folder. Normally, this has not been a problem. However I am now having to update one of our XSL-FO files and testing is consistently manifesting the problem. So I want to ask the FOP developers if deploying FOP as a shared, common resource is problematic with Tomcat? (e.g., is there a known classloader issue, or a threading issue?). It's just weird. If I restart tomcat, the webapp streams the PDF to my browser just fine. I can do this all day long, but the minute I re-deploy the application, I get the following TransformerError: 12:31:28,156 WARN FOTreeBuilder:373 - Mismatch: page-sequence (http://www.w3.org/1999/XSL/Format) vs. root (http://www.w3.org/1999/XSL/Format) 12:31:28,265 ERROR FOTreeBuilder:229 - javax.xml.transform.TransformerException: java.lang.NullPointerException 12:31:28,265 FATAL DisplayStatementAction:178 - java.lang.NullPointerException 12:31:28,281 ERROR ActionExceptionHandler:37 - java.lang.NullPointerException com.ppi.csr.web.actions.DisplayStatementAction.execute(DisplayStatementAction.java:199) org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) com.ppi.csr.web.SecurityFilter.doFilter(SecurityFilter.java:124) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) java.lang.Thread.run(Unknown Source) I have tried to use an ErrorListener: transformer.setErrorListener(new ErrorListener() { public void warning(TransformerException exc) throws TransformerException { LogFactory.getLog(com.ppi.csr.web.actions.DisplayStatementAction.class).warn(exc.getMessage()); throw exc; } public void error(TransformerException exc) throws TransformerException { LogFactory.getLog(com.ppi.csr.web.actions.DisplayStatementAction.class).error(exc.getMessage()); throw exc; } public void fatalError(TransformerException exc) throws TransformerException { LogFactory.getLog(com.ppi.csr.web.actions.DisplayStatementAction.class).fatal(exc.getMessage()); throw exc; } }); But this doesn't help. -- View this message in context: http://www.nabble.com/FOP-works-until-web-app-is-re-deployed-to-Tomcat-tp20271546p20271546.html Sent from the FOP - Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
