« Portable » client JAX-WS
Question
Je déployé un service JAX-WS et l'utilisation wsimport pour générer du code client. Parce que je lance wsimport sur localhost, je suis le code client avec binind sur l'adresse "localhost".
Mais je veux réutiliser les code client sur d'autres ordinateurs qui accèdent à mon service déployé avec une y.y.y.y. IP publique Comment utiliser dynamiquement les (une fois) généré le code client pour accéder à mon service. (L'adresse IP de service peut changer ...)
La solution
Ceci est couvert dans le FAQ de JAX-WS:
Q. Comment puis-je changer l'adresse de service Web dynamique pour une demande?
((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "...");
Autres conseils
Bien sûr. Jetez un oeil à la exemple JBoss . Voici l'extrait de code correspondant:
BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://your.wsdl.location");
Habituellement, le WSDL est généré et therfore le fournisseur WS insère les URL pertinentes dans le WSDL.