一尘不染

Java 如何更改webservice url端点?

java

我使用JBoss utils(JAX-WS兼容)生成了一个web服务客户机,使用Eclipse的“来自wsdl的web服务客户机”。

所以,我提供的唯一东西是指向web服务WSDL的url。

现在,web服务提供者告诉我更改web服务的“客户端端点应用程序访问的url”。

它是什么以及如何改变它?


阅读 572

收藏
2020-03-21

共1个答案

一尘不染

在IMO中,提供者告诉你更改服务端点(即到web服务的位置),而不是客户端端点(我不知道这可能是什么)。要更改服务端点,基本上有两个选项。

使用绑定提供程序设置终结点URL

第一个选项是更改BindingProviderBindingProvider.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]));
...
2020-03-21