2011-02-26 77 views
1

我有一個.net應用程序提供的SOAP Web服務。有時候我們會添加一些對象定義,但這些都是可選的,並且從XML/HTTP的角度來看,代表這些字段的XML標記可以省略並且工作正常。這應該讓現有的Web服務用戶繼續工作。Apache Axis在WSDL更改後失敗

而這正是它幾乎適用於所有人的方式。使用.net,python,ruby等的客戶端都沒有問題。但任何改變似乎都會破壞使用Java中的Apache Axis2的人。

看來,在每個請求上,Axis都會檢查端點WSDL並驗證它是否完全像它所具有的存根。如果不是,則會引發異常。 (意外的子元素)

Axis中是否有任何選項可以關閉此功能,並讓Axis認爲它的當前存根是正確的?

更新: 我也應該注意到,這是使用ColdFusion,因爲它使用的Axis2

+0

切換到CXF不是我的項目的選項,我需要Axis在每次請求之前獲取WSDL。還有什麼想法? – l0st3d 2011-03-15 17:49:15

+0

我發現了我的問題,它不是與Axis。我所調用的WS是一個名爲Magento的PHP應用程序,它在處理請求時請求它自己的WSDL。我將Axis發出的請求誤解爲日誌消息。我的錯。希望這個評論能夠幫助我們節省開支,只要我試圖診斷這一點。我的意思是,爲什麼要在每個SOAP請求上獲取自己的WSDL? – l0st3d 2011-03-16 12:01:31

回答

0

所以,我是從我們的客戶的角度遠程調試。我把所有的東西都運行起來了,並且能夠用老版本的Axis2(1.2)重現錯誤。我使用的最新版本(1.5.4)似乎沒有這個問題(使用ADB綁定)因此,對於使用Axis的客戶來說,升級是一個很好的解決方法。不幸的是,我們的一些客戶正在使用內置舊版本的ColdFusion,因此我必須弄清楚如何處理它們。

1

與Apache CXF的客戶端有問題,默認情況下,這將也有可能拋出一個異常,因爲它沒有一個元素理解。但是,您可以在端點上將「set-jaxb-validation-event-handler」屬性設置爲「false」 ,並且它將被忽略。

+0

我開始認爲我們應該改變我們的示例代碼來使用別的東西,並建議我們的客戶對抗Axis。 CXF可能工作。謝謝你的提示。 – ryber 2011-02-28 15:10:59