Using code that was generated with wsimport
, can the service endpoint be overridden without having to regenerate the code?
I have written a simple java webservice, following are the steps:
wsimport http://localhost:8080/service/helloservice?Wsdl
The problem is that is the service is deployed on an app server running on port other than 8080, the communication between client and service never happens. I am trying to know what is the best way to create stubs that does not have server and port hardcoded in the stub used by the client.
Your client can set the end-point in the service "port" at runtime via the BindingProvider interface.
Consider the JAX-WS client in this JAX-WS tutorial. Another way to write this code would be:
HelloService service = new HelloService();
Hello port = service.getHelloPort();
BindingProvider bindingProvider = (BindingProvider) port;
bindingProvider.getRequestContext().put(
BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
"http://foo:8086/HelloWhatever");
String response = port.sayHello(name);
Caveat: I haven't downloaded the tutorial code and tested this code against it.