目标名称空间的CXF客户端复制

时间:2010-04-13 12:36:50

标签: java cxf web-services

我在同一台服务器上托管一个web服务和一个webapp,由wsdl2java生成。我可以通过SoapUI很好地联系服务,并在发布到实时服务器时返回单个命名空间声明,但是当我在本地工作并使用SoapUI时,它会生成xlmns =“”的两个实例,而不是xml中的单个实例。我在下面复制了一个示例xml文件:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body>
<SendResponse xmlns="http://myendpoint.org/service" xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<Receipt>
<MyReceipt xmlns:ns3="http://myendpoint.org/service" xmlns="" xmlns="" xmlns:ns6="http://myapp.myserver.net/myservicegroup/myservice/V01" receiptVersion="V01">
  <ReceiptHeader>
    <ReceiptTimestamp>2010-04-13T08:27:03.036-04:00</ReceiptTimestamp>
  </ReceiptHeader>
  <TransmissionReceipt>
    <TransmissionID>testuser</TransmissionID>
    <TransmissionTimestamp>2010-04-13T08:27:03.036-04:00</TransmissionTimestamp>
  </TransmissionReceipt>
</MyReceipt></Receipt></SendResponse></soap:Body></soap:Envelope>

所以当它解组时,当我使用我的webapp作为webservice客户端时,它会失败。为什么CXF添加第二个命名空间?我一直看到调试直到返回,它在Web服务端看起来100%完美,没有重复的名称空间。直到将xml返回给客户端才会发生。

1 个答案:

答案 0 :(得分:0)

在XML中,属性对于每个元素都是唯一的,因此如果发生这种情况,那么它可能是一个错误,您应该这样报告它。我以前和CXF合作过,它是一个很棒的图书馆,但遗憾的是它并不完美。我不得不乱用各种版本,升级到不稳定的版本以解决我遇到的错误。

W3C XML Spec

  

属性名称不得在同一个开始标记或空元素标记中出现多次。