【问题标题】:How to dynamic create service proxy with JAX-WS如何使用 JAX-WS 动态创建服务代理
【发布时间】:2010-11-26 02:04:16
【问题描述】:

我在每个端点应用程序(服务器和客户端)上都有通用的 Web 服务接口。 如何在客户端创建端口而不连接到“相同”wsdl 的服务器?

我搜索了显示此伪代码的内容:

MagicProxyFactory proxy = MagicProxyFactory.newInstance(MyServiceInterface.class);

/* then bind service address like that
((BindingProvider)proxy).getRequestContext()
.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http address"); 
*/

MyServiceInterface port = (MyServiceInterface) proxy.getPort();

【问题讨论】:

    标签: web-services jax-ws


    【解决方案1】:

    步骤包括:

    1. 使用 Service.create 方法创建服务实例 您需要知道服务的 wsdl 位置、服务名称和名称空间 URL。
      例如

      URL wsdlLocation = new URL("http://example.org/my.wsdl"); QName serviceName = new QName("http://example.org/sample", "MyService"); 服务 s = Service.create(wsdlLocation, serviceName);

    2. 使用Service.getPort()方法获取服务代理(连接的服务端口)。 为此,您需要知道端点实现类名称。
      例如MyService port = s.getPort(MyService.class);

    您现在可以通过代理调用方法。

    【讨论】:

      【解决方案2】:

      使用地铁?你不能。您需要 WSDL 来创建代理。将 WSDL 与您的客户端捆绑在一起(首选),或者使用在代理创建期间可以下载 WSDL 的 URL。

      【讨论】:

        猜你喜欢
        • 2012-09-06
        • 1970-01-01
        • 2013-05-08
        • 2011-06-24
        • 2023-04-10
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多