使用蓝图 XML DSL 的 Camel DataFormat Jackson 会引发上下文异常



无论我将数据格式放在XML DSL蓝图中的哪个位置,我都会从不同的地方开始收到此错误。 如果我删除它,它可以工作,但当然我无法将 JSON 转换为 POJO。 ???任何帮助或告诉我我做错了什么,我错过了什么。 谢谢!

错误

Unable to start blueprint container for bundle passthrumt1.core/1.0.1.SNAPSHOT
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'endpoint'. One of '{"http://camel.apache.org/schema/blueprint":redeliveryPolicyProfile, "http://camel.apache.org/schema/blueprint":onException, "http://camel.apache.org/schema/blueprint":onCompletion, "http://camel.apache.org/schema/blueprint":intercept, "http://camel.apache.org/schema/blueprint":interceptFrom, "http://camel.apache.org/schema/blueprint":interceptSendToEndpoint, "http://camel.apache.org/schema/blueprint":restConfiguration, "http://camel.apache.org/schema/blueprint":rest, "http://camel.apache.org/schema/blueprint":route}' is expected.

XML DSL

   <camelContext     
      id="com.passthru.coreCamelContext"
      trace="true"
      xmlns="http://camel.apache.org/schema/blueprint"
      allowUseOriginalMessage="false"
      streamCache="true"
      errorHandlerRef="deadLetterErrorHandler" >
    <properties>
        <property key="http.proxyHost" value="PITC-Zscaler-Americas.proxy.corporate.com"/>
        <property key="http.proxyPort" value="80"/>
    </properties>
    <streamCaching  id="CacheConfig" 
                    spoolUsedHeapMemoryThreshold="70" 
                    anySpoolRules="true"/>
<!--  -->
    <dataFormats>
            <json id="Json2Pojo" library="Jackson" unmarshalTypeName="com.passthru.core.entities.TokenEntities">
            </json>
    </dataFormats>
    <endpoint id="predixConsumer" uri="direct:preConsumer" />
    <endpoint id="predixProducer" uri="direct:preProducer" />
    <endpoint id="getToken" uri="direct:getToken" />
      <onException>
        <exception>com.passthru.dataservice.PDXDataServiceInvalidDataException</exception>
        <redeliveryPolicy maximumRedeliveries="3" />
        <handled>
          <constant>true</constant>
        </handled>
        <log
          message="Invalid Data From Data Service"
          loggingLevel="ERROR" />
        <setBody>
          <simple>${body.toString}</simple>
        </setBody>
        <to uri="file:{{errorArchive}}" />
      </onException>

如果我将数据格式放在属性上方,它会抱怨,我必须删除属性和 streamcache 语句才能使其工作。 但我需要代理属性。 任何建议???再次感谢

如果

<camelContext     
  id="com.ge.digital.passthru.coreCamelContext"
  trace="true"
  xmlns="http://camel.apache.org/schema/blueprint"
  allowUseOriginalMessage="false"
  streamCache="true"
  errorHandlerRef="deadLetterErrorHandler" >
<dataFormats>
    <json id="Json2Pojo" library="Jackson" unmarshalTypeName="com.passthru.core.entities.TokenEntities"/>
</dataFormats>
<properties>
    <property key="http.proxyHost" value="PITC-Zscaler-Americas-Cincinnati3PR.proxy.corporate.com"/>
    <property key="http.proxyPort" value="80"/>
</properties>

我明白了

Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'properties'. One of '{"http://camel.apache.org/schema/blueprint":redeliveryPolicyProfile, "http://camel.apache.org/schema/blueprint":onException, "http://camel.apache.org/schema/blueprint":onCompletion, "http://camel.apache.org/schema/blueprint":intercept, "http://camel.apache.org/schema/blueprint":interceptFrom, "http://camel.apache.org/schema/blueprint":interceptSendToEndpoint, "http://camel.apache.org/schema/blueprint":restConfiguration, "http://camel.apache.org/schema/blueprint":rest, "http://camel.apache.org/schema/blueprint":route}' is expected.

我错过了什么?

Camel蓝图XML根据camel-blueprint.xsd进行验证。 您对名称为 camelContextFactoryBean 的复杂类型感兴趣,该复杂类型包含具有固定顺序的可用元素序列。

在此序列中定义的 camelContext 元素的正确顺序为:

  • 性能
  • 全局选项
  • 属性占位符
  • 包扫描
  • 上下文扫描
  • 杰姆克斯代理
  • 流缓存
  • 出口
  • 默认服务调用配置
  • 服务调用配置
  • 默认Hystrix配置
  • 海斯特瑞克斯配置
  • 路由生成器
  • routeContextRef
  • restContextRef
  • 线程池配置文件
  • 线程池
  • 端点
  • 数据格式
  • 变形金刚
  • 验证者
  • 再递送保单简介
  • 上异常
  • 完成时
  • 拦截
  • 拦截自
  • 拦截发送到端点
  • rest配置
  • 休息
  • 路线

要解决您的问题,请将所有endpoint声明移至 dataFormats 上方。

最新更新