I think the Transformer contains instance data and isn't supposed to be cached.
Try caching your Templates object and getting a new transformer from it. -----Original Message----- From: Steve Jones [mailto:[EMAIL PROTECTED] Sent: Monday, May 17, 2004 7:07 AM To: [EMAIL PROTECTED] Subject: Re-using Transformers Hi, I'm in the process of developing an application that uses XSLT Transformers multiple times. To save the overhead of re-creating the Transformer object each time, I thought I'd keep a reference to the transformer around, and pass new XML documents to it as required. Unfortunately, I don't seem to be able to re-use a Transformer once it's been used once - a NullPointerException is thrown somewhere deep in the code. I haven't had time to examine the source code to try and figure out what the problem is yet, but I was hoping that someone could shed light on the matter in the meantime (I've included the stack trace below). I suppose the ultimate question is: Is it even possible to re-use a Transformer? And if so, how? Thanks in advance, Steve. STACK TRACE (apologies if it wraps) =================================== javax.xml.transform.TransformerException: java.lang.NullPointerException at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.j ava:1226) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java: 638) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java: 1088) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java: 1066) at ........ --------- java.lang.NullPointerException at org.apache.xpath.objects.XNodeSet.dispatchCharactersEvents(XNodeSet.java:262 ) at org.apache.xpath.Expression.executeCharsToContentHandler(Expression.java:303 ) at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:319) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2182) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java: 678) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2182) at org.apache.xalan.templates.ElemIf.execute(ElemIf.java:200) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2182) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java: 678) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2182) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java: 678) at org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.ja va:426) at org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java:287) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2182) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java: 678) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2182) at org.apache.xalan.templates.ElemElement.constructNode(ElemElement.java:414) at org.apache.xalan.templates.ElemElement.execute(ElemElement.java:363) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform erImpl.java:2182) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Transformer Impl.java:2008) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.j ava:1171) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java: 638) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java: 1088) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java: 1066) at .........
