Can't load the XML resource (using TRaX transformer). java.lang.NullPointerException

5,098 views
Skip to first unread message

chris

unread,
Feb 2, 2012, 9:29:09 AM2/2/12
to Flying Saucer Users
I'm experiencing a very strange, difficult to debug error. On my local
machine (Mac OSX Lion, Eclipse, Jetty) I am able to generate PDF
output using a very plain, validated XHTML document. When deployed to
a remote Tomcat instance (where I can't debug), the exact same code
has been throwing "org.xhtmlrenderer.util.XRRuntimeException: Can't
load the XML resource (using TRaX transformer).
java.lang.NullPointerException".

Very frustrating. I haven't been able to find any other instances of
people referring to this error, except in reference to ParadoxPDF, an
extension of FS. (I'm using plain old FS).

Has anyone else seen this happen? Any ideas?

Here's the full stack from the catalina logs:

org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource
(using TRaX transformer). java.lang.NullPointerException
org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource
(using TRaX transformer). java.lang.NullPointerException
at org.xhtmlrenderer.resource.XMLResource
$XMLResourceBuilder.createXMLResource(XMLResource.java:191)
at org.xhtmlrenderer.resource.XMLResource.load(XMLResource.java:75)
at
org.xhtmlrenderer.pdf.ITextRenderer.setDocumentFromString(ITextRenderer.java:
157)
at com.geostellar.domain.Proposal.asPDF(Unknown Source)
at
com.geostellar.service.DefaultBrochureService.generateBrochureAsPDF(Unknown
Source)
at
com.geostellar.service.controller.ProposalController.getProposalFromQuote(Unknown
Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:
175)
at
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:
421)
at
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:
409)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:
774)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:
719)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:
644)
at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:
549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
305)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
210)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:
109)
at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:
83)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:
97)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:
78)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:
54)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:
35)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:
177)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:
187)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:
105)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:
79)
at org.springframework.security.web.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
at
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:
149)
at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:
237)
at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:
167)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
210)
at
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:
176)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:
145)
at
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:
92)
at
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:
381)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
224)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
169)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:
472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
98)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
927)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
407)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:
987)
at org.apache.coyote.AbstractProtocol
$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint
$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.xml.transform.TransformerException:
java.lang.NullPointerException
at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:
716)
at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:
313)
at org.xhtmlrenderer.resource.XMLResource
$XMLResourceBuilder.createXMLResource(XMLResource.java:189)
... 65 more
Caused by: java.lang.NullPointerException
at org.apache.xerces.dom.ElementImpl.setIdAttributeNS(Unknown Source)
at
com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.startElement(SAX2DOM.java:
211)
at
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:
204)
at
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.characters(ToXMLSAXHandler.java:
524)
at org.apache.xerces.parsers.AbstractSAXParser.characters(Unknown
Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.characters(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanContent(Unknown
Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
$FragmentContentDispatcher.dispatch(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:
636)
at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:
707)
... 67 more

Geoff Mottram

unread,
Feb 12, 2012, 12:06:36 AM2/12/12
to flying-sa...@googlegroups.com
I debug Tomcat all of the time. It's a very useful thing to be able to do.
Just create a script to start Tomcat in such a way that you can then attach
a debugger after Tomcat is running. It looks something like this:

CATALINA_PID="/usr/local/tomcat/logs/tomcat.pid"
export CATALINA_PID
exec ./catalina.sh jpda start

You can also pass Java runtime options in the startup script like this:

JAVA_OPTS="-DMY_DEFINE=SOME_STRING"
export JAVA_OPTS

Then just set a breakpoint on the NULL pointer exception.

Geoff

chris

unread,
Mar 7, 2012, 3:33:39 PM3/7/12
to flying-sa...@googlegroups.com
I'm debugging in Tomcat now and, surprisingly, hitting the error on my local machine. At the setDocument(...) line of this code (which is in a try/catch block), I'm kicked out to the catch block.
 
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(someFile);
renderer.getSharedContext().setReplacedElementFactory(new CustomReplacedElementFactory());
renderer.layout();
renderer.createPDF(baos);

Any insights?
Reply all
Reply to author
Forward
0 new messages