如何防止 CXF 转换 %gt;在有效载荷中>?



我有一个带有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 -&gt;</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"/> 

现在没有转换了。

最新更新