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]

Reply via email to