4

我有一个用于在服务器上创建 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);
4

4 回答 4

1

仅供参考。您还可以使用注释方法

@WebMethod(exclude=true)

这将确保忽略该方法以与 wsdl 进行比较。

于 2017-05-18T07:24:46.513 回答
0

我刚刚删除了 web 服务引用并使用该界面再次创建。

于 2015-02-04T18:35:10.833 回答
0

使用本地 WSDL 文件:
客户端应用程序具有服务的本地 WSDL 文件,例如在 jar 文件中。

你得到它

URL wsdlURL = this.getClass().getClassLoader()
                .getResource("MyWebService.wsdl");

这适用于我编写的应用程序。服务器后来扩展了一个附加的 WSDL 属性,而客户端仍然使用本地属性。

于 2012-11-29T18:16:45.777 回答
0

您的 Service 类包含一个带有本地 wsdl 文件变量的静态构造函数。检查本地 wsdl 文件是否有 someNewMethod。如果不是从原始 URL 下载 wsdl 文件并保存到本地。wsdl 末尾的soap 地址位置值也很重要。有时https会变成http。

于 2018-01-31T09:06:49.043 回答