2017-06-08 30 views
0

我正在使用Apache Camel从Oracle AQ读取消息。我正在使用Camel version 2.19.0,Spring 4以及骆驼路由的XML配置。在运行应用程序时,我得到“从type:java.lang.String转换为所需类型时的错误:org.w3c.dom.Document with value ??? due org.xml.sax.SAXParseException”。有人可以让我知道可能是什么问题,以及如何解决它在XML骆驼配置。Camel AQ路由错误Xpath中的TypeConversionException

这里是相关的XML内容。

<camelContext id="moveId" shutdownRunningTask="CompleteCurrentTaskOnly" xmlns="http://camel.apache.org/schema/spring" xmlns:dret="http://mycompany.com/data/user"> 
<route id="dataRoute" errorHandlerRef="transactionErrorHandler"> 
    <from uri="myAQ:MYDB.AQ_MYQ_Q"/> 
     <setHeader headerName="userId"> 
      <xpath resultType="java.lang.String">//dret:userId</xpath> 
     </setHeader>  
     <policy ref="PROPAGATION_REQUIRED_MY_AQ"> 
       <process ref="myEventProcessor"/> 
     </policy> 
</route> 

下面是堆栈跟踪。

org.apache.camel.TypeConversionException:java.lang.String中所要求的类型:从类型类型转换 期间出错org.w3c.dom.Document中 与值???由于org.xml.sax.SAXParseException; lineNumber:1; columnNumber:1;序言中不能有内容。 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.builder.xml.XPathBuilder.doGetDocument(XPathBuilder.java:1144) at org.apache.camel.builder.xml.XPathBuilder.getDocument(XPathBuilder.java:1123) at org.apache.camel.builder.xml。 XPathBuilder.doInEvaluateAs(XPathBuilder.java:915) at org.apache.camel.builder.xml.XPathBuilder.evaluateAs(XPathBuilder.java:809) at org.apache.camel.builder.xml.XPathBuilder.evaluate(XPathBuilder。 java:779) at org.apache.camel.builder.xml.XPathBuilder.evaluate(XPathBuilder。 java:167)

+0

添加您的xml文件 –

+0

添加了XML片段。问题在于使用XPATH设置标题。 – user7615505

回答

1

它看起来像Oracle AQ消息没有正确地出队,xml有效载荷正在被读为???。您可以尝试将orai18n.jar添加到应用程序的类路径中,并查看它是否可以解决问题。