在运行时覆盖或设置使用 wsimport 生成的代码的 Web 服务端点

2024-03-19

使用生成的代码wsimport,是否可以覆盖服务端点而无需重新生成代码?

我写了一个简单的java webservice,步骤如下:

  1. 我编译java类并生成一个war文件
  2. 将 war 文件部署到我的应用程序服务器(tomcat)
  3. 通过 URL 访问 WSDL,例如本地主机:8080/service/helloservice?wsdl
  4. 将 URL 与 wsimport.bat 结合使用来生成客户端类,例如:wsimport http://localhost:8080/service/helloservice?Wsdl
  5. 我在客户端应用程序中使用这些类来调用服务

问题是,如果服务部署在运行在 8080 以外的端口上的应用程序服务器上,客户端和服务之间的通信永远不会发生。我想知道创建在客户端使用的存根中没有服务器和端口硬编码的存根的最佳方法是什么。


您的客户端可以在运行时通过以下方式设置服务“端口”中的端点:绑定提供者 http://download.oracle.com/javase/6/docs/api/javax/xml/ws/BindingProvider.html界面。

考虑 JAX-WS 客户端这个 JAX-WS 教程 http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/JAXWS3.html。编写此代码的另一种方法是:

HelloService service = new HelloService();
Hello port = service.getHelloPort();
BindingProvider bindingProvider = (BindingProvider) port;
bindingProvider.getRequestContext().put(
      BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
      "http://foo:8086/HelloWhatever");
String response = port.sayHello(name);

警告:我还没有下载教程代码并对其进行测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在运行时覆盖或设置使用 wsimport 生成的代码的 Web 服务端点 的相关文章

随机推荐