2014-08-27 58 views
0

我在使用PAYLOAD模式下使用Camel CXF時遇到問題。我發送的SOAP請求的身體沒有名稱空間前綴。駱駝CxfPayload使用沒有前綴的名稱空間時出現問題(xmlns:xmlns)

<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體元素cxfPayload.getBody().get(0)這給我的元素列表。

現在無論何時我使用無前綴的名稱空間,該元素都有一個屬性「xmlns:xmlns」。我注意到這發生在兩個地方。

  1. DefaultCxfBiding.addNamespace(元素,地圖)
  2. CxfPayload.addNamespace(元素,地圖)

而且在這兩個地方, 「的xmlns:」 簡直是前綴nsMap.get(關鍵)而不檢查值是否爲xmlns。

這在架構驗證過程中會導致問題,並且如果將相同的CXFPayload發送到其他服務(代理服務模式),則會導致Out攔截器失敗,因爲「xmlns:xmlns」不是有效的名稱空間屬性。

欣賞幫助,因爲我不確定是否在這裏丟失了某些東西。

回答

0

這是camel-cxf的bug,我剛剛爲它創建了一個JIRA

+0

優秀。謝謝。 – 2014-09-03 17:49:33