簡體   English   中英

忽略JAX-WS客戶端中缺少的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM