We have stream caching enabled on the context.
@Override protected void setupCamelContext(CamelContext camelContext) { camelContext.setNameStrategy(new ExplicitCamelContextNameStrategy(applicationId)); camelContext.setTracing(isTraceOn); camelContext.setUseMDCLogging(isMdcOn); camelContext.setStreamCaching(true); } ________________________________ From: Claus Ibsen-2 [via Camel] <ml-node+s465427n5785176...@n5.nabble.com> Sent: 16 July 2016 09:03:30 To: David Bennison Subject: Re: Camel XSLT/Saxon not thread safe? Try enabling stream caching, or convert the payload to String after the CXF call. On Wed, Jul 13, 2016 at 3:06 PM, El Bennitto <[hidden email]</user/SendEmail.jtp?type=node&node=5785176&i=0>> wrote: > 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 > ([hidden email]</user/SendEmail.jtp?type=node&node=5785176&i=1>) 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. -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2 ________________________________ If you reply to this email, your message will be added to the discussion below: http://camel.465427.n5.nabble.com/Camel-XSLT-Saxon-not-thread-safe-tp5785086p5785176.html To unsubscribe from Camel XSLT/Saxon not thread safe?, click here<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5785086&code=ZGF2aWQuYmVubmlzb25AbWV0YXBhY2suY29tfDU3ODUwODZ8LTE1MzYzMTYzMDM=>. NAML<http://camel.465427.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> -- View this message in context: http://camel.465427.n5.nabble.com/Camel-XSLT-Saxon-not-thread-safe-tp5785086p5785204.html Sent from the Camel - Users mailing list archive at Nabble.com.