【发布时间】:2010-01-12 04:56:57
【问题描述】:
我使用 Netbeans 从 WSDL url 生成 Web 服务客户端代码。 但我无法在运行时使用代码更改端点地址。
请帮我解决这个问题!
【问题讨论】:
标签: java web-services netbeans
我使用 Netbeans 从 WSDL url 生成 Web 服务客户端代码。 但我无法在运行时使用代码更改端点地址。
请帮我解决这个问题!
【问题讨论】:
标签: java web-services netbeans
您可以通过两种方式做到这一点:
1) 将port 转换为BindingProvider 并指定BindingProvider.ENDPOINT_ADDRESS_PROPERTY 属性
MyService service = new MyService();
MyPort port = service....
BindingProvider bindingProvider = (BindingProvider) port;
bindingProvider.getRequestContext().put(
BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://New.Endpoint/service");
2) 您可以调用生成的以 WSDL URL 作为参数的服务构造函数。
QName qname = new QName("http://serviceuri/", "service");
String wsdl = "http://New.Endpoint/service?wsdl";
MyServiec service = new MyServiec(new URL(wsdl), qname);
MyPort port = check...;
【讨论】:
您可以通过服务的构造函数完成所有操作。 JAX-WS 将为您生成各种形式的构造函数。这与上面 Chandra 的回答中提到的解决方案 #2 基本相同。
但是,我认为您不希望像该答案中那样再次对命名空间和服务名称进行编码。只需这样做:
URL wsdl = new URL("http://New.Endpoint/service?wsdl");
MyService wsService = new MyService(wsdlURL);
【讨论】: