90 votes

Comment changer de point de terminaison webservice url?

J'ai généré un client de service Web à l'aide de JBoss utils (compatible JAX-WS) à l'aide du "client de service Web Eclipse à partir d'un wsdl".

Ainsi, la seule chose que j'ai fournie était une URL à un service Web WSDL.

À présent, le fournisseur de services Web me dit de modifier "l'URL de l'accès aux applications client" du service Web.

De quoi s'agit-il et comment le changer?

155voto

Pascal Thivent Points 295221

OMI, le fournisseur est en train de vous dire de changer de point de terminaison de service (c'est à dire où à atteindre le service web), pas le client endpoint (je ne comprends pas ce que cela pourrait être). Pour modifier le point de terminaison de service, en gros, vous avez deux options.

Utiliser la Liaison Fournisseur pour définir l'URL du point de terminaison

La première option consiste à modifier l' BindingProvider.ENDPOINT_ADDRESS_PROPERTY la valeur de la propriété de l' BindingProvider (tous les proxy implémente javax.xml.ws.BindingProvider interface):

...
EchoService service = new EchoService();
Echo port = service.getEchoPort();

/* Set NEW Endpoint Location */
String endpointURL = "http://NEW_ENDPOINT_URL";
BindingProvider bp = (BindingProvider)port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);

System.out.println("Server said: " + echo.echo(args[0]));
...

L'inconvénient est que cela ne fonctionne que lorsque l'original WSDL est toujours accessible. Pas recommandé.

Utiliser le WSDL pour obtenir l'URL du point de terminaison

La deuxième option est d'obtenir l'URL du point de terminaison du WSDL.

...
URL newEndpoint = new URL("NEW_ENDPOINT_URL");
QName qname = new QName("http://ws.mycompany.tld","EchoService"); 

EchoService service = new EchoService(newEndpoint, qname);
Echo port = service.getEchoPort();

System.out.println("Server said: " + echo.echo(args[0]));
...

-4voto

Femi Points 1

Pour changer la propriété d'adresse finale, éditez votre fichier wsdl

 <wsdl:definitions.......
  <wsdl:service name="serviceMethodName">
    <wsdl:port binding="tns:serviceMethodNameSoapBinding" name="serviceMethodName">
      <soap:address location="http://service_end_point_adress"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: