在运行时更改Web服务端点地址

时间:2010-01-12 04:56:57

标签: java web-services netbeans

我使用Netbeans从WSDL url生成Web Service客户端代码。 但我无法在运行时使用代码更改端点地址。

请帮我解决这个问题!

2 个答案:

答案 0 :(得分:12)

你可以用两种方式做到:

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...;

答案 1 :(得分:3)

您可以从服务的构造函数中完成所有操作。 JAX-WS将为您生成各种形式的构造函数。这与Chandra上面的答案中提到的解决方案#2基本相同。

但是,我认为您不再像在该答案中那样将代码命名为命名空间和服务名称。只需:

URL wsdl = new URL("http://New.Endpoint/service?wsdl");
MyService wsService = new MyService(wsdlURL);