J'ai généré un client de service Web à l'aide d'utils JBoss (compatible JAX-WS) à l'aide du 'client de service Web d'Eclipse à partir d'un wsdl'.
Donc, la seule chose que j'ai fournie était une URL vers un WSDL de service Web.
Maintenant, le fournisseur de services Web me dit de changer l '"URL d'accès à l'application du point de terminaison client" du service Web.
Qu'est-ce que c'est et comment le changer?
java
web-services
jboss
jax-ws
EugèneP
la source
la source
Réponses:
OMI, le fournisseur vous dit de changer le point de terminaison du service (c'est-à-dire où atteindre le service Web), pas le point de terminaison client (je ne comprends pas ce que cela pourrait être). Pour modifier le point de terminaison du service, vous avez essentiellement deux options.
Utilisez le fournisseur de liaison pour définir l'URL du point de terminaison
La première option consiste à modifier la
BindingProvider.ENDPOINT_ADDRESS_PROPERTY
valeur de propriété deBindingProvider
(chaque proxy implémente l'javax.xml.ws.BindingProvider
interface):L'inconvénient est que cela ne fonctionne que lorsque le WSDL d'origine est toujours accessible. Non recommandé.
Utilisez le WSDL pour obtenir l'URL du point de terminaison
La deuxième option consiste à obtenir l'URL du point de terminaison à partir du WSDL.
la source
wsimport
outils modernes ne génèrent plus de code avec uneget[Service]Port
méthode. Au lieu de cela, appelezget[Service]
et transtypez l'objet résultant en aBindingProvider
pour définir ces types de propriétés.Pour ajouter des précisions ici, lorsque vous créez votre service, la classe de service utilise la valeur par défaut «wsdlLocation», qui y a été insérée lorsque la classe a été construite à partir du wsdl. Donc, si vous avez une classe de service appelée SomeService et que vous créez une instance comme celle-ci:
Si vous regardez à l'intérieur de SomeService, vous verrez que le constructeur ressemble à ceci:
Donc, si vous voulez qu'il pointe vers une autre URL, vous utilisez simplement le constructeur qui prend un argument URL (il y a 6 constructeurs pour définir qname et des fonctionnalités également). Par exemple, si vous avez configuré un moniteur TCP / IP local qui écoute sur le port 9999 et que vous souhaitez rediriger vers cette URL:
et qui appellera ce constructeur à l'intérieur du service:
la source
Je n'irais pas jusqu'à @Femi pour modifier la propriété d'adresse existante. Vous pouvez facilement ajouter de nouveaux services à la section des définitions.
Cela ne nécessite pas une recompilation du WSDL vers Java et la mise à jour n'est pas plus difficile que si vous utilisiez l'option BindingProvider (qui ne fonctionnait pas pour moi btw).
la source
Pour modifier la propriété d'adresse de fin, modifiez votre fichier wsdl
la source