我使用Eclipse (兼容JAX-WS)使用JBoss 'web service client from a wsdl‘生成了web服务客户端。
所以,我唯一提供的就是一个web服务WSDL的url。
现在,web服务提供者告诉我更改web服务的“客户端端点应用程序访问的url”。
它是什么?如何改变它?
发布于 2010-03-22 16:59:21
据我所知,提供者告诉您更改服务端点(即在何处访问web服务),而不是客户端端点(我不知道这是什么)。要更改服务端点,您基本上有两个选择。
使用绑定提供程序设置端点URL
第一个选项是更改BindingProvider
的BindingProvider.ENDPOINT_ADDRESS_PROPERTY
属性值(每个代理都实现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]));
...
发布于 2015-03-20 07:31:39
为了在这里补充一些说明,当您创建服务时,服务类使用默认的'wsdlLocation',它是在从wsdl构建类时插入的。因此,如果您有一个名为SomeService的服务类,并且您创建了一个如下实例:
SomeService someService = new SomeService();
如果您查看SomeService内部,您将看到构造函数如下所示:
public SomeService() {
super(__getWsdlLocation(), SOMESERVICE_QNAME);
}
因此,如果希望它指向另一个URL,只需使用接受URL参数的构造函数(也有6个用于设置qname和特性的构造函数)。例如,如果您设置了一个侦听端口9999的本地TCP/IP监视器,并且您想要重定向到该URL:
URL newWsdlLocation = new URL("http://theServerName:9999/somePath");
SomeService someService = new SomeService(newWsdlLocation);
它将在服务内部调用此构造函数:
public SomeService(URL wsdlLocation) {
super(wsdlLocation, SOMESERVICE_QNAME);
}
发布于 2013-11-09 18:10:05
要更改结束地址属性,请编辑wsdl文件
<wsdl:definitions.......
<wsdl:service name="serviceMethodName">
<wsdl:port binding="tns:serviceMethodNameSoapBinding" name="serviceMethodName">
<soap:address location="http://service_end_point_adress"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
https://stackoverflow.com/questions/2490737
复制相似问题