2012-10-11 67 views
2

我們的產品之一是使用最後合同方法發佈web服務。這已成爲一個真正的問題,因爲我們所有的客戶(ws客戶)都必須在我們發佈新版本產品後立即重建其客戶端應用程序。這是由於所有名稱空間更改都是自動生成的wsdls的代價。我們使用Axis1作爲javatowsdl。我一直在尋找一個很好的方法論/工具來爲此開發向後兼容的web服務。如何實現向後兼容的soap webservice(基於java)?

即版本9.3客戶端仍然可以打到10.0服務,因爲他們會錯過一些功能,這很好。但是他們應該能夠不中斷地運作。

我明白整個問題是由於我們的合同最後的方法(如果我錯了,請糾正我)。因此,如果解決方案是採用合同優先的webservice,我可以使用哪些工具和技術?另外什麼是合同優先的最佳實踐?

在此先感謝。

回答

2

正如您已經意識到的那樣,建議使用合同優先(或自上而下)的方式來開發Web服務。這意味着需要手動定義WSDL接口,並使用自動工具基於此文檔生成Web Service的Java框架。

重要的是您的WSDL遵守WS-I standart以確保不同平臺上的客戶端之間的互操作性。您可以使用SOAP-UI來測試您的WSDL是否與標準兼容。

對於Skeleton生成,您可以使用幾種Web Service運行時API:像Apache Axis和JAX-WS。我個人更喜歡JAX-WS,因爲它是Java標準,並且受所有Java EE容器支持。每個容器都提供了Skeleton一代的工具,Weblogic有一些不錯的Ant Task,但也有WS-Import是Container中性。

+0

感謝這個卡洛斯。你或任何人都知道建立wsdl合同的工具嗎? (我的意思是一個帶有用戶界面的可視化工具)。初次實施後,我必須創建一個api變更管理流程。不是每個人都可以手動編寫wsdls(特別是當你用doc/lit封裝的風格寫合同時)。只是想,如果有任何好的工具存在納入進程。 – Charith

+0

我們只使用Eclipse進行代碼格式化和縮進。有更多用戶友好的工具,但我知道的工具都是專有的(比如IBM WebSphere Integration Developer) –