2009-11-03 15 views
10

Ho distribuito un servizio JAX-WS e ho utilizzato wsimport per generare il codice client. Perché eseguo wsimport su localhost, ho ottenuto il codice client con binind sull'indirizzo "localhost".Client JAX-WS "portatile"

ma voglio riutilizzare quelli codice client su altri computer che accedono mio servizio implementato con un y.y.y.y. IP pubblico Come può utilizzare dinamicamente quel codice cliente (una volta) generato per accedere al mio servizio. (L'IP del servizio può cambiare ...)

risposta

13

Questo è trattato nel FAQ di JAX-WS:

D. Come faccio a modificare l'indirizzo Web Service in modo dinamico per una richiesta?

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

Sicuro. Dai uno sguardo allo JBoss example. Ecco il frammento di codice rilevante:

BindingProvider bp = (BindingProvider) port; 
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://your.wsdl.location"); 

Di solito il WSDL viene generato e therfore il provider WS inserisce gli URL rilevanti nel WSDL.