【问题标题】:"Portable" JAX-WS client“便携式”JAX-WS 客户端
【发布时间】:2010-12-12 16:47:37
【问题描述】:

我部署了一个 JAX-WS 服务并使用 wsimport 生成客户端代码。 因为我在 localhost 上运行 wsimport,所以我在“localhost”地址上获得了带有 binind 的客户端代码。

但我想在其他计算机上重用这些客户端代码,这些计算机使用公共 IP y.y.y.y 访问我部署的服务。如何动态使用那些(一次)生成的客户端代码来访问我的服务。 (服务的ip可能会改变...)

【问题讨论】:

    标签: dynamic wsdl jax-ws endpoints wsimport


    【解决方案1】:

    这在 JAX-WS 的 FAQ 中有介绍:

    问。如何为请求动态更改 Web 服务地址?

    ((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "..."); 
    

    【讨论】:

      【解决方案2】:

      当然。看看JBoss example。下面是相关代码sn-p:

      BindingProvider bp = (BindingProvider) port;
      bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://your.wsdl.location");
      

      通常会生成 WSDL,然后 WS 提供者将相关的 URL 插入 WSDL。

      【讨论】: