使用蓝图 XML DSL 的 Camel DataFormat Jackson 引发上下文异常 [英] Camel DataFormat Jackson using blueprint XML DSL throws context exception
问题描述
无论我将数据格式放在 XML DSL 蓝图中的哪个位置,我都会在不同的位置开始出现此错误.如果我删除它,它可以工作,但当然我不能将 JSON 转换为 POJO.???任何帮助或告诉我我做错了什么,我错过了什么.谢谢!
No matter where I place the dataformats in XML DSL blueprint, I get this error just starting at different places. if I remove it, it works but of course I can't convert JSON to POJO. ??? any help or tell me what I'm doing wrong, what i'm missing. thanks!
错误
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>
如果我将数据格式放在属性上方,它会抱怨,我必须删除属性和流缓存语句才能使其工作.但我需要代理属性.有什么建议???再次感谢
If I place the dataformats above properties, it complains, I have to remove properties and streamcache statements in order for it to work. but I need the proxy properties. any suggestions??? thanks again
如果
<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 blueprint XML 已针对 camel-blueprint.xsd.您对名称为 camelContextFactoryBean
的复杂类型感兴趣,它包含具有固定顺序的可用元素序列.
Camel blueprint XML is validated against camel-blueprint.xsd.
You are interested in complex type with name camelContextFactoryBean
which contains sequence of available elements with fixed order.
此序列中定义的camelContext元素的正确顺序是:
- 属性
- 全局选项
- propertyPlaceholder
- 包装
- packageScan
- 上下文扫描
- jmxAgent
- 流缓存
- 导出
- defaultServiceCallConfiguration
- serviceCallConfiguration
- defaultHystrixConfiguration
- hystrixConfiguration
- 路由构建器
- routeContextRef
- restContextRef
- threadPoolProfile
- 线程池
- 端点
- 数据格式
- 变形金刚
- 验证器
- redeliveryPolicyProfile
- 异常
- 完成时
- 拦截
- 拦截来自
- interceptSendToEndpoint
- restConfiguration
- 休息
- 路线
为了解决您的问题,将所有 endpoint
声明移动到 dataFormats
正上方.
To solve your problem move all endpoint
declarations right above dataFormats
.
这篇关于使用蓝图 XML DSL 的 Camel DataFormat Jackson 引发上下文异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!