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

用户363808:

使用使用生成的代码,是否wsimport可以在不重新生成代码的情况下覆盖服务端点?

我已经编写了一个简单的Java Web服务,步骤如下:

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

问题在于该服务部署在运行于8080以外的端口的应用服务器上,客户端与服务之间的通信从未发生。我试图知道什么是创建在客户端使用的存根中没有服务器和端口硬编码的存根的最佳方法。

麦克道尔:

您的客户端可以在运行时通过BindingProvider接口在服务“端口”中设置端点

本JAX-WS教程中考虑JAX-WS客户端编写此代码的另一种方法是:

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);

警告:我尚未下载教程代码并针对该代码进行了测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章