我的環境的前提編碼:我在春天3運行使用彈簧WS處理所有SOAP要求。我已經與多家供應商進行了多次整合,沒有出現任何問題。RPC /與JAXWS
問題:這個最近的集成有一個供應商運行真正古老的東西,他們的WSDLs使用rpc綁定樣式。不用說JAXWS並不完全支持rpc(因爲它是interop的對立面,所以這是正確的)。
可能的解決辦法#1:我仍然可以嘗試生成使用Axis 1.其實我已經做到了這一點,但我非常非常不願意引入軸依賴到我的POM他們的WSDL的存根。我很確定會有大量的圖書館衝突,可能會混淆當前非常穩定的環境。
可能的解決方案#2:我可以嘗試將他們的WSDL重寫爲JAXWS能夠解析的文檔/文本。運行了一些問題實際上重寫的WSDL(獲得「架構描述符{} XXX XXX在消息部分‘XXX’是沒有定義,無法綁定到Java」)。除此之外,如果他們的終端專門檢查rpc,我就會被搞砸了。
可能的解決方案#3:我可以部署一個全新的運行Axis和此服務客戶端的盒子。即主項目使REST調用這個框,這個框會發出SOAP請求並解析響應。看起來像一個非常非常愚蠢的方式(和一些簡單的工作荒謬的工作量)去做這件事。
的任何解決方案,我已經錯過了?此外,我一直在爲此搜索谷歌,雖然有些人在第一名中取得了成功,但沒有人真正談論此後的後果。 (即處理軸的傳統依賴,試圖使軸在春季3發揮好,等)
感謝您的評論李。 #1不確定你的意思。通過Axis的WSDL2Java生成的存根固有地擴展了Axis特定的對象。例如,所有服務都從org.apache.axis.client.Service繼承。您是否建議我在源代碼庫中包含所有的Axis源代碼並重構它們,而不是將Axis作爲Maven依賴項? – Michael 2013-04-04 18:30:16
#3是的,我聽到你,我的一個壞的術語。我並不是指像物理盒子那樣的盒子,而是一個單獨的邏輯上下文和一個不同的已部署應用程序。可以坐在相同的盒子上,雖然這是一個不同的蠕蟲罐,因爲我與許多盒子聚集在一起。 ESB聽起來像一個巨大的矯枉過正! – Michael 2013-04-04 18:31:48
是的,我的意思是建立你自己的Axis jar,稍做修改以適應軟件包,Axis源代碼的副本。不要將它完全混入你自己的源代碼中。我已經看到,在Weblogic或WebSphere等其他用戶希望使用第三方jar的情況下,這種方式取得了良好的效果,但不希望其版本與其客戶所需的版本衝突。新Websphere使用OSGI以不同的方式避免這個問題。 – 2013-04-04 18:35:22