2009-11-03 8 views
10

Ich habe einen JAX-WS-Dienst bereitgestellt und wsimport verwendet, um Clientcode zu generieren. Da ich wsimport auf localhost ausführen, habe ich den Client-Code mit binind auf "localhost" -Adresse."Portable" JAX-WS-Client

Aber ich möchte diesen Client-Code auf anderen Computern wiederverwenden, die auf meinen bereitgestellten Dienst mit einer öffentlichen IP-Adresse y.y.y.y zugreifen. Wie kann dieser (einmal) generierte Client-Code dynamisch für den Zugriff auf meinen Dienst verwendet werden? (Die IP des Dienstes kann sich ändern ...)

Antwort

13

Dies ist in den FAQ von JAX-WS bedeckt:

Frage: Wie kann ich die Web-Service-Adresse dynamisch für eine Anforderung ändern?

((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "..."); 
6

Sicher. Werfen Sie einen Blick auf die JBoss example. Hier ist der relevante Code-Schnipsel:

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.