使用没有前缀的命名空间时出现Camel CxfPayload问题(xmlns:xmlns)

时间:2014-08-27 16:11:30

标签: namespaces cxf apache-camel

我在PAYLOAD模式下使用Camel CXF时遇到问题。我正在发送一个SOAP请求,其主体没有名称空间前缀。

<soap:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.mycompnay.com/test/" xmlns:ns1="http://www.mycompany.com/test/1/">
    <soap:Body>
        <request>
            <ns1:identifier>TEST</ns1:identifier>
        </request>
    </soap:Body>
</soap:Envelope>

我正在尝试将cxf body元素作为cxfPayload.getBody().get(0),它为我提供了一个元素列表。

现在每当我使用没有前缀的命名空间时,该元素都有一个属性“xmlns:xmlns”。我注意到这发生在两个地方。

  1. DefaultCxfBiding.addNamespace(Element,Map)
  2. CxfPayload.addNamespace(元素,地图)
  3. 在这两个地方,“xmlns:”只是以nsMap.get(key)为前缀,而不检查值是否为xmlns。

    这会在架构验证期间导致问题,并且如果将相同的CXFPayload发送到另一个服务(代理服务模式),则会导致Out拦截器失败,因为“xmlns:xmlns”不是有效的命名空间属性。

    感谢帮助,因为我不确定我是否在这里遗漏了一些东西。

1 个答案:

答案 0 :(得分:0)

它是camel-cxf的错误,我刚为它创建了一个JIRA