2011-05-03 35 views
2

我有一個使用Web服務的java web服務客戶端。客戶端使用WSDL2Java工具生成。所有工作都正常,直到Web服務提供者通過添加非必填字段來更改其中一個架構對象。當調用Web服務時,響應應該返回這些模式對象的數組,並且由於返回的對象有一個額外的字段 - 所有內容都會中斷。根據我的理解,有一種方法可以在不破壞客戶端應用程序的情況下進行此類更改。
你能指出我如何解決這個問題的正確方向嗎? 任何建議表示讚賞。 謝謝, Nadia從客戶端應用程序中解耦WSDL

+1

歡迎來到StackOverflow。這是一個提出Java問題的好地方。如果你在java問題上標記java,更多的人會看到它們!修正了這個問題。越多的人看到這一點,就越有可能得到幫助。 – 2011-05-03 13:50:19

+0

謝謝沃倫。 – Nadia 2011-05-03 14:19:31

回答

1

Web服務不符合WSDL? 也許你可以編寫WSDL並添加非必填字段

或者WSDL已更改? 如果WSDL已更改,則需要使用WSDL2Java工具重新生成代碼。

+0

是的,WSDL已經改變,它可能會再次發生。我希望我的客戶端能夠忽略這些WSDL更改,是否有可能? – Nadia 2011-05-03 14:51:28

1

這個問題通常很難解決,這就是爲什麼面向客戶端的XML模式不應該經常更改的原因。您可以嘗試禁用模式驗證,但是如果模式更改太多,您的客戶端應用程序仍會爆炸。

推薦的企業方式(使用行話:'鬆耦合')是在生成的Java類和域對象之間有一個單獨的域對象層和映射。只是在模式更改時更新映射,這些映射不應該深入到應用程序的層中。但是,每次模式更改時仍然需要重新編譯應用程序。

+0

謝謝,我將檢查模式驗證,但除此之外 - 沒有辦法更加獨立於WSDL更改嗎? – Nadia 2011-05-03 15:15:49

+0

嗯....好吧,所以必須隨WSDL的更改而更改對象,而不管我是否添加了一個域對象的圖層。沒有無縫的方式來適應或「忽略」這些變化。鬆耦合仍然需要改變,然後重新編譯..謝謝你的迴應! – Nadia 2011-05-03 16:32:21

2

嘗試嘗試爲客戶端使用不同的綁定選項。如果我沒有錯誤使用JAXBRI(od JiBX)應該解決問題。嘗試WSDL2Java -d jaxbri 默認爲adb更多信息在here