如何防止 CXF 转换 %gt;到 > 在有效载荷中?
How to prevent CXF from converting %gt; to > in payload?
我有一个带有 CXF enpoint 的 camel 适配器,其配置如下:
<camel-cxf:properties>
<entry key="dataFormat" value="PAYLOAD"/>
<entry key="allowStreaming" value="true"/>
<entry key="relayHeaders" value="false"/>
</camel-cxf:properties>
SOAP 输入在负载中包含以下元素:
<foo>here is an arrow -></foo>
但是输出看起来像这样:
<foo>here is an arrow -></foo>
我知道这不是无效的。 XML不需要转义>。 "only" 强烈推荐(详见 this SO question)。
但我不想更改有效载荷。 CXF 应该只切掉 SOAP 信封并保留其中的所有内容。我可以禁用 XML 负载的 parsing/re-serialization 吗?
看看添加一个拦截器(作为接收的最后一步),或者您可以在 cxf 步骤之后将其传递到 camel 路由中的处理器并修改主体。
您可以将数据格式更改为 MESSAGE,这样 camel-cxf 将不会接触到 XML 有效负载或附件。
顺便说一句,您无法使用此数据格式访问 SOAP Header。
我的一位同事发现,问题似乎出在其他组件如何与 CXF 的 CachedCxfPayload 输出对象一起工作。 CXF 之后的处理器似乎进行了不需要的转换。
我们的解决方案是在传递之前将 CXF 的输出转换为字符串:
<convertBodyTo type="java.lang.String"/>
现在没有转换了。
我有一个带有 CXF enpoint 的 camel 适配器,其配置如下:
<camel-cxf:properties>
<entry key="dataFormat" value="PAYLOAD"/>
<entry key="allowStreaming" value="true"/>
<entry key="relayHeaders" value="false"/>
</camel-cxf:properties>
SOAP 输入在负载中包含以下元素:
<foo>here is an arrow -></foo>
但是输出看起来像这样:
<foo>here is an arrow -></foo>
我知道这不是无效的。 XML不需要转义>。 "only" 强烈推荐(详见 this SO question)。
但我不想更改有效载荷。 CXF 应该只切掉 SOAP 信封并保留其中的所有内容。我可以禁用 XML 负载的 parsing/re-serialization 吗?
看看添加一个拦截器(作为接收的最后一步),或者您可以在 cxf 步骤之后将其传递到 camel 路由中的处理器并修改主体。
您可以将数据格式更改为 MESSAGE,这样 camel-cxf 将不会接触到 XML 有效负载或附件。 顺便说一句,您无法使用此数据格式访问 SOAP Header。
我的一位同事发现,问题似乎出在其他组件如何与 CXF 的 CachedCxfPayload 输出对象一起工作。 CXF 之后的处理器似乎进行了不需要的转换。
我们的解决方案是在传递之前将 CXF 的输出转换为字符串:
<convertBodyTo type="java.lang.String"/>
现在没有转换了。