我使用Netbeans从WSDL url生成Web Service客户端代码。 但我无法在运行时使用代码更改端点地址。
请帮我解决这个问题!
答案 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);