如何使用JAX-WS动态创建服务代理

时间:2010-11-26 02:04:16

标签: web-services jax-ws

我在每个端点应用程序(服务器和客户端)上都有通用的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();

2 个答案:

答案 0 :(得分:2)

步骤包括:

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

    网址wsdlLocation =新网址(“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);

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

答案 1 :(得分:0)

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