我有一个带有CXF ENPOINT的骆驼适配器(来自),该适配器的配置为:
<camel-cxf:properties>
<entry key="dataFormat" value="PAYLOAD"/>
<entry key="allowStreaming" value="true"/>
<entry key="relayHeaders" value="false"/>
</camel-cxf:properties>
肥皂输入包含有效载荷中的以下元素:
<foo>here is an arrow -></foo>
但是,输出看起来像这样:
<foo>here is an arrow -></foo>
我知道这不是无效的。XML不需要逃脱>。强烈建议它"唯一"(有关详细信息,请参见此问题)。
,但我不希望更改有效载荷。CXF只能切断肥皂信封,并将其保持原样。我可以禁用XML有效载荷的解析/重新序列化吗?
看一下添加拦截器(作为接收的最后一步),或者您可以在CXF步骤之后将其传递到骆驼路由的处理器中并修改身体。<<<<<<<<<<<<<</p>
cxf Interceptor
您可以将数据构造更改为Messaeg,以这种方式,Camel-CXF将无法与XML有效负载或附件接触。顺便说一句,您无法使用此DataFormat访问SOAP标头。
我发现的一个同事发现,问题似乎是其他组件如何与CXF的 cachedcxfpayload 输出对象一起使用。CXF之后出现的处理器似乎进行了不需要的转换。
我们的解决方案是将CXF的输出转换为字符串,然后再传递:
<convertBodyTo type="java.lang.String"/>
现在没有转换了。