In our route we receive a response from a web service and then split the response using XPATH. In each split route we transform the XML before posting it off to another web service. We are not setting any additional configurations on the XSLT URI other than saxon=true.
Eg:- .... from("direct:mainRoute") .to("cxf://http://first-webservice.com...") .split(namespaces.xpath("/xpath/expression")).parallelProcessing(true) .to("direct:splitRoute") .end() .end(); from("direct:splitRoute") .to("xslt:/xslt/stylesheet.xsl?saxon=true") .to(cxf://http://second-webservice.com...") .end(); Running this single threaded works fine but when we set the split to run in parrallel we get unexpected results from the XSLT transformations:- <custom5 xsi:nil="true"/>SKU10.00009443122false1DIRECT_SALE4vt-bt45-5bt45Moleskin Slippersfanny.valette@france.com04707509500.00000.00000.00000.00000.00000.0000Ship7ParisLondonfalse0<custom7 xsi:nil="true"/> <custom8 xsi:nil="true"/> Where the XSLT is :- <xsl:template match="q1:ShoppingCart/q1:LineItemSKUList/q1:OrderLineItemItem" mode="salesSourceId"> <xsl:if test="position() < 2"> <custom6><xsl:value-of select="q1:SalesSourceID" /></custom6> </xsl:if> </xsl:template> If I remove the above XSLT then we don't get any issues but I am concerned that this is just curing the symptom and not the cause. It looks like it is merging data from two different split responses as London is only in one reponse and some of the other information (fanny.vale...@france.com) is from another. Sometimes we also get a NullPointerException:- Error processing route: org.apache.camel.TypeConversionException: Error during type conversion from type: java.lang.String to the required type: java.lang.String with value [OrderResponseItem: null] due java.lang.NullPointerException at org.apache.camel.impl.converter.BaseTypeConverterRegistry.createTypeConversionException(BaseTypeConverterRegistry.java:629) at org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:150) at org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:41) at org.apache.camel.builder.ExpressionBuilder$64.evaluate(ExpressionBuilder.java:1533) at org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36) at org.apache.camel.processor.LogProcessor.process(LogProcessor.java:53) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) at org.apache.camel.processor.Pipeline.process(Pipeline.java:121) at org.apache.camel.processor.Pipeline.process(Pipeline.java:83) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62) at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) at org.apache.camel.processor.MulticastProcessor.doProcessParallel(MulticastProcessor.java:827) at org.apache.camel.processor.MulticastProcessor.access$200(MulticastProcessor.java:85) at org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:320) at org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.camel.RuntimeCamelException: java.lang.NullPointerException at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1690) at org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1285) at org.apache.camel.impl.converter.InstanceMethodTypeConverter.convertTo(InstanceMethodTypeConverter.java:78) at org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:306) at org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:133) ... 24 more Caused by: java.lang.NullPointerException at com.sun.org.apache.xerces.internal.dom.ParentNode.nodeListItem(ParentNode.java:786) at com.sun.org.apache.xerces.internal.dom.ParentNode.item(ParentNode.java:800) at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:199) at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:286) at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:209) at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:286) at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:209) at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:286) at net.sf.saxon.dom.DOMSender.walkNode(DOMSender.java:209) at net.sf.saxon.dom.DOMSender.outputElement(DOMSender.java:286) at net.sf.saxon.dom.DOMSender.sendElement(DOMSender.java:154) at net.sf.saxon.dom.DOMSender.send(DOMSender.java:99) at net.sf.saxon.dom.DOMObjectModel.sendSource(DOMObjectModel.java:273) at net.sf.saxon.event.Sender.send(Sender.java:226) at net.sf.saxon.jaxp.IdentityTransformer.transform(IdentityTransformer.java:374) at org.apache.camel.converter.jaxp.XmlConverter.toResult(XmlConverter.java:132) at org.apache.camel.converter.jaxp.XmlConverter.toResult(XmlConverter.java:116) at org.apache.camel.converter.jaxp.XmlConverter.toString(XmlConverter.java:238) at org.apache.camel.converter.jaxp.XmlConverter.toString(XmlConverter.java:282) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1281) -- View this message in context: http://camel.465427.n5.nabble.com/Camel-XSLT-Saxon-not-thread-safe-tp5785086.html Sent from the Camel - Users mailing list archive at Nabble.com.