如何在 JAX-WS 中正​​确指定 wsdl 位置?

How to correctly specify the wsdl location in JAX-WS?

我最近收到了一个 JAX-WS 客户端应用程序的代码,我在其中看到在本地指定了一个 wsdl 以构建端点。但它是静态指定的,我认为这是不对的。

static {
    URL url = null;
   try {
      url = new URL("file:/home/user/work/src/proj/myproject.wsdl");
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    WSDL_LOCATION = url;
}

这不是正确的做法吗?指定此 wsdl 位置的另一种方法是什么?

有两种可能的方法:

  • 将 WSDL 添加为项目的资源。然后它将嵌入到最终的 jar 中,您可以使用 Class.getResource(String name).
  • 访问它
  • 指向网络服务器托管的 WSDL。它通常采用 http://example.com/MyWebService?WSDL 形式(注意最后的 ?WSDL)。

您可以将 wsdl 放在您的类路径中并按如下方式引用它:

URL url = ClassLoader.getResource("myproject.wsdl");

或者

URL url = ClassLoader.getSystemResource("myproject.wsdl");