[英]Ignore missing method in JAX-WS client
我有一個模型用於在服務器上創建Web服務端點。 客戶端使用相同的模型。 但是,當向服務器添加新操作但客戶端仍使用舊模型時,服務創建將失敗,並出現如下例外情況(為清晰起見,添加了換行符):
Exception in thread "main" javax.xml.ws.WebServiceException:
Method someNewMethod is exposed as WebMethod, but there is no
corresponding wsdl operation with name someNewMethod in the
wsdl:portType{http://example.com}MyService
我理解這個問題,但有可能忽略這個嗎? 我希望在使用Web服務時能夠向后兼容。 只要添加方法,這應該在大多數情況下都能正常工作。
getPort
方法中出現問題:
Service s = Service.create(
new URL("http://example.com/foo?wsdl"),
new QName("http://example.com", "MyService"));
MyService m = s.getPort(MyService.class);
僅供參考。 您還可以使用注釋方法
@WebMethod(exclude=true)
這將確保忽略該方法以與wsdl進行比較。
使用本地WSDL文件:
客戶端App具有服務的本地WSDL文件,例如在jar文件中。
你明白了
URL wsdlURL = this.getClass().getClassLoader()
.getResource("MyWebService.wsdl");
這適用於我寫的應用程序。 服務器稍后擴展了另一個WSDL屬性,而客戶端仍然使用本地屬性。
我剛剛刪除了webservice引用並使用該接口再次創建。
您的Service類包含一個帶有本地wsdl文件變量的靜態構造函數。 檢查本地wsdl文件是否具有someNewMethod 。 如果沒有從原始Url下載wsdl文件並保存到本地。 wsdl末尾的soap地址位置值也很重要。 有時https轉為http。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.