处理骆驼中的多种肥皂版本

时间:2015-05-13 01:23:16

标签: web-services soap apache-camel cxf

关于如何在单个CXF网关端点中处理Soap 1.1和Soap1.2有效负载的一般问题(使用cxf dataformat是MESSAGE)

我通过WS端点公开我的camel路由,我的cxf端点定义如下所示:

    <camel-cxf:cxfEndpoint id="esb-adapter-ws-gateway" 
            wsdlURL="adapters/esb/wsdls/product-v1.wsdl" 
            address="/esb/adapter/v1" 
            serviceName="ns:EsbService" 
            endpointName="ns:EsbServiceSOAP12Port" 
            xmlns:cfc="http://www.test.com/services/esb/adapter/v1">
    <camel-cxf:properties>
        <entry key="dataFormat" value="MESSAGE" />
    </camel-cxf:properties>
</camel-cxf:cxfEndpoint>

这里我使用MESSAGE dataformat,因为它提供了更多的控制和对故障有效载荷的可见性。而且我也喜欢它:)

问题是,我想在此端点处理Soap 1.1和Soap 1.2有效负载。

我如何在路线级别处理此问题?

我正在检查传入的soap命名空间并通过camel标头设置标志。根据标题,我为肥皂响应&amp;设置soap名称空间。肥皂缺陷。

解决方案正常,但我担心的是endpointName =&#34; ns:EsbServiceSOAP12Port&#34;在cxf端点声明中提到。

  1. 我无法从WSDL
  2. 定义Soap 1.1和Soap 1.2端口
  3. 我无法忽略endpointName选项:)
  4. 有没有更好的方法来处理这种情况?

    注意:我正在使用XSLT来形成响应和错误消息。例如:如果传入的有效载荷是Soap1.1,那么我有一个单独的Soap 1.1故障xslt模板来生成故障有效载荷。

0 个答案:

没有答案