我在每个端点应用程序(服务器和客户端)上都有通用的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();
答案 0 :(得分:2)
步骤包括:
使用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);
使用Service.getPort()
方法获取服务代理(用于连接的服务端口)。
为此,您需要了解端点实现类名称
例如MyService port = s.getPort(MyService.class);
您现在可以通过代理调用方法。
答案 1 :(得分:0)
使用Metro?你不能。您需要WSDL来创建代理。将WSDL与您的客户端捆绑(首选)或使用在代理创建期间可以下载WSDL的URL。