我使用JBoss utils(JAX-WS兼容)生成了一个web服务客户机,使用Eclipse的“来自wsdl的web服务客户机”。
所以,我提供的唯一东西是指向web服务WSDL的url。
现在,web服务提供者告诉我更改web服务的“客户端端点应用程序访问的url”。
它是什么以及如何改变它?
在IMO中,提供者告诉你更改服务端点(即到web服务的位置),而不是客户端端点(我不知道这可能是什么)。要更改服务端点,基本上有两个选项。
使用绑定提供程序设置终结点URL
第一个选项是更改BindingProvider的BindingProvider.ENDPOINT_ADDRESS_属性值(每个代理都实现javax.xml.ws.BindingProvider接口):
BindingProvider
BindingProvider.ENDPOINT_ADDRESS_
javax.xml.ws.BindingProvider
... EchoService service = new EchoService(); Echo port = service.getEchoPort(); /* Set NEW Endpoint Location */ String endpointURL = "http://NEW_ENDPOINT_URL"; BindingProvider bp = (BindingProvider)port; bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL); System.out.println("Server said: " + echo.echo(args[0])); ...
缺点是,这只在原始WSDL仍然可以访问时才起作用。不推荐。
使用WSDL获取端点URL
第二个选项是从WSDL获取端点URL。
... URL newEndpoint = new URL("NEW_ENDPOINT_URL"); QName qname = new QName("http://ws.mycompany.tld","EchoService"); EchoService service = new EchoService(newEndpoint, qname); Echo port = service.getEchoPort(); System.out.println("Server said: " + echo.echo(args[0])); ...