【问题标题】:Ignore missing method in JAX-WS client忽略 JAX-WS 客户端中的缺失方法
【发布时间】:2012-11-12 14:17:54
【问题描述】:

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

【问题讨论】:

  • 您使用的是什么网络服务库?许多包都实现了 JAX-WS。例如,CXF 不会这样做。
  • @bmargulies 我们使用 Oracle 的 jaxws RI。
  • 您是在使用 WSDL 中的端点地址,还是在获取端口实例后在运行时设置它?
  • @Nathan WSDL 包含端口的位置。除了 WSDL 本身之外,我没有手动设置任何地址。
  • 您可以尝试在本地添加 WSDL 的副本并将 wsdlLocation 设置为该本地副本。您遇到的可能是在制作端口之前从 wsdlLocation 加载 wsdl 的构造函数。您可能应该在本地副本中放置端点的虚假地址(例如 urn:none 或其他东西),以查看它是否从实时副本中获取端点地址,但从本地副本验证操作。否则,如果您真的不需要从 wsdl 获取端点地址,则本地副本和手动设置端点 url 将起作用。

标签: java soap jax-ws


【解决方案1】:

仅供参考。 您还可以使用

注释该方法
@WebMethod(exclude=true)

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

【讨论】:

  • 这对我有用,谢谢...我将 Weblogic 12.2.1.3 与 Java 8 和 Spring Boot 1.5.15 一起使用
【解决方案2】:

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

你得到它

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

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

【讨论】:

  • 我得看看这是否有效。 WSDL 由 JAX-WS 生成并拆分为多个 WSDL 和模式文件(因为 JAX-WS 就是这样运行的)。我猜这些必须合并,否则schemaLocation 的查找失败。
  • 生成的schema文件源代码,当然在客户端留。只需要模式保持兼容,并且新字段、方法在服务器 WSDL 中被标记为可选(我认为是默认值)
  • 更新的答案,在我的情况下,它是一个更改属性,而不是一个方法
【解决方案3】:

我刚刚删除了 webservice 引用并使用接口重新创建。

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2012-12-09
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2012-09-25
      相关资源
      最近更新 更多