„Portable“ JAX-WS-Client
Frage
I eingesetzt, um einen JAX-WS-Service und die Verwendung wsimport zu Client-Code zu generieren. Weil ich wsimport auf localhost laufen, ich habe den Client-Code mit binind auf „localhost“ Adresse.
Aber ich will, dass dieser Client-Code auf anderen Computern wiederverwenden, die meinen bereitgestellten Dienst mit einem öffentlichen y.y.y.y. IP zugreifen Wie kann dynamisch jenen (einmal) erzeugten Client-Code verwenden, um meinen Dienst zuzugreifen. (Die IP-of-Service kann sich ändern ...)
Lösung
Dies ist in der FAQ von JAX-WS:
Q. Wie kann ich die Web Service ändern Adresse dynamisch für eine Anfrage?
((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "...");
Andere Tipps
Klar. Werfen Sie einen Blick auf die JBoss Beispiel . Hier ist der relevante Code-Snippet:
BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://your.wsdl.location");
Normalerweise sind die WSDL generiert und therfore der WS-Provider fügt die entsprechenden URLs in die WSDL.