A Xalan TransformerImpl invoked from within Tomcat Servlet is throwing a NPE. The Transformer is created using JAXP factory from an XML String converted to a StreamSource. Below, I have provided: * code that defines the Xalan TransformerImpl * code the throws the NPE * org.apache.xalan.xslt.EnvironmentCheck output * stack trace
Any help would be very much appreciated! Thanks, Mark Here is the code that defines the Transformer that is giving the NPE. As you can see, the XSLT is defined as a String - not a file. // XSLT to format printing of raw XML - no spaces public static final String XSLT_RAW = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\"><xsl:output method=\"xml\" encoding=\"UTF-8\" indent=\"no\"/><xsl:strip-space elements=\"*\"/><xsl:template match=\"*\"><xsl:copy><xsl:copy-of select=\"@*\"/><xsl:apply-templates/></xsl:copy></xsl:template></xsl:stylesheet>"; TransformerFactory transFac = TransformerFactory.newInstance(); rawXformer = transFac.newTransformer (new StreamSource(new ByteArrayInputStream(XSLT_RAW.getBytes()))); The following code throws the NPE: ByteArrayOutputStream out = new ByteArrayOutputStream(); StreamResult res = new StreamResult(out); try { rawXformer.transform(new DOMSource(n), res); } catch(TransformerException te) { .... Initially, I thought this might be a bug from an old version of Xalan, but I have installed the latest. Here is the output from org.apache.xalan.xslt.EnvironmentCheck: #---- BEGIN writeEnvironmentReport($Revision: 1.26 $): Useful stuff found: ---- version.DOM.draftlevel=2.0fd java.class.path=/usr/share/non-apt/jdk/lib/tools.jar:/usr/share/java/tomcat/bin/bootstrap.jar:/usr/share/java/tomcat/bin/commons-logging-api.jar version.JAXP=1.1 or higher java.ext.dirs=/usr/share/non-apt/j2sdk1.4.2_05/jre/lib/ext #---- BEGIN Listing XML-related jars in: foundclasses.sun.boot.class.path ---- xalan.jar-path=/usr/share/java/tomcat/common/endorsed/xalan.jar xercesImpl.jar-apparent.version=xercesImpl.jar from Xerces-J-bin.2.6.2 xercesImpl.jar-path=/usr/share/java/tomcat/common/endorsed/xercesImpl.jar xml-apis.jar-apparent.version=xml-apis.jar from tck-jaxp-1_2_0 branch of xml-commons, tag: xml-commons-external_1_2_01 xml-apis.jar-path=/usr/share/java/tomcat/common/endorsed/xml-apis.jar xsltc.jar-apparent.version=xsltc.jar present-unknown-version xsltc.jar-path=/usr/share/java/tomcat/common/endorsed/xsltc.jar #----- END Listing XML-related jars in: foundclasses.sun.boot.class.path ----- version.xerces2=Xerces-J 2.6.2 version.xerces1=not-present version.xalan2_2=Xalan Java 2.6.0 version.xalan1=not-present version.ant=Apache Ant version 1.6.1 compiled on February 12 2004 java.version=1.4.2_05 version.DOM=2.0 version.crimson=present-unknown-version sun.boot.class.path=/usr/share/java/tomcat/common/endorsed/xalan.jar:/usr/share/java/tomcat/common/endorsed/xercesImpl.jar:/usr/share/java/tomcat/common/endorsed/xml-apis.jar:/usr/share/java/tomcat/common/endorsed/xsltc.jar:/usr/share/non-apt/j2sdk1.4.2_05/jre/lib/rt.jar:/usr/share/non-apt/j2sdk1.4.2_05/jre/lib/i18n.jar:/usr/share/non-apt/j2sdk1.4.2_05/jre/lib/sunrsasign.jar:/usr/share/non-apt/j2sdk1.4.2_05/jre/lib/jsse.jar:/usr/share/non-apt/j2sdk1.4.2_05/jre/lib/jce.jar:/usr/share/non-apt/j2sdk1.4.2_05/jre/lib/charsets.jar:/usr/share/non-apt/j2sdk1.4.2_05/jre/classes version.SAX=2.0 version.xalan2x=Xalan Java 2.6.0 #----- END writeEnvironmentReport: Useful properties found: ----- # YAHOO! Your environment seems to be OK. Lastly, this is the stack trace from the NPE: [http-8080-Processor25] ERROR com.javector.util.XMLUtil ; Line#: 1; Column#: 286 javax.xml.transform.TransformerException: java.lang.NullPointerException at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2341) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:115) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:177) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:115) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:395) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:177) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:115) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2202) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1276) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:673) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1192) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1170) at com.javector.util.XMLUtil.domToString(XMLUtil.java:125) at com.javector.util.XMLUtil.domToString(XMLUtil.java:137) at samples.chap5.oneway.PrintMessage.processMessage(PrintMessage.java:59) at com.javector.ws.jaxrpc.JAXRPCOneWayService.unmarshalAndProcess(JAXRPCOneWayService.java:98) at com.javector.ws.jaxrpc.axis.AxisOneWayService.onMessage(AxisOneWayService.java:90) at com.javector.ws.jaxrpc.axis.oneway.PrintMessageSOAPBindingSkeleton.onMessage(PrintMessageSOAPBindingSkeleton.java:66) 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:324) at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:384) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:281) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:319) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:450) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:285) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:653) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:301) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534) Caused by: java.lang.NullPointerException at org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.nextNode(DOM2DTM.java:387) at org.apache.xml.dtm.ref.DTMDefaultBase._nextsib(DTMDefaultBase.java:565) at org.apache.xml.dtm.ref.DTMDefaultBase.getNextSibling(DTMDefaultBase.java:1142) at org.apache.xpath.axes.ChildIterator.nextNode(ChildIterator.java:84) at org.apache.xpath.axes.NodeSequence.nextNode(NodeSequence.java:280) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:280) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:177) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2336) ... 61 more --------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]