Mon blog
Java JAXWS - le soap facile
Created 16/02/2010 12:14
Le contexte
Pour mon boulot nous devions nous connecter à un système "legacy", disposant toutefois d'interfaces soap, à partir d'un système développé en Java. Nous avons voulu utiliser axis (2) qui est pas mal référencé sur le net ; son utilisation n'est pas toute simple (au niveau de son intégration dans une application par exemple). Du coup, je me suis reporté sur le standard jaxws (désormais natif depuis la JVM 1.6) ; et là bingo ! En quelques minutes mes classes (stub et objets du wsdl étaient générées et intégrées à mon projet). Voici un résumé très rapide de ma compréhension du fonctionnement de ce standard.
Utilisation de jaxws avec l'outil de jboss
Jboss fournit un utilitaire qui génère toutes les classes nécessaires à partir du wsdl : à la fois la classe de génération du stub mais aussi tous les objets décrits par le fichier wsdl (objets des méthodes du webservice).
JBossWS-Native stack deployed
WSConsumeTask is a cmd line tool that generates portable JAX-WS artifacts from a WSDL file.
usage: org.jboss.wsf.spi.tools.cmd.WSConsume [options] <wsdl-url>
options:
-h, --help Show this help message
-b, --binding=<file> One or more JAX-WS or JAXB binding files
-k, --keep Keep/Generate Java source
-c --catalog=<file> Oasis XML Catalog file for entity resolution
-p --package=<name> The target package for generated source
-w --wsdlLocation=<loc> Value to use for @WebService.wsdlLocation
-o, --output=<directory> The directory to put generated artifacts
-s, --source=<directory> The directory to put Java source
-t, --target=<2.0|2.1> The JAX-WS specification target
-q, --quiet Be somewhat more quiet
-v, --verbose Show full exception stack traces
-l, --load-consumer Load the consumer and exit (debug utility)
-e, --extension Enable SOAP 1.2 binding extension
Appel du webservice
On commence par construire l'objet annoté avec @WebServiceClient puis l'on appel sa méthode annotée @WebEndpoint. C'est celle-ci qui retourne notre stub (c'est à dire l'objet disposant des méthodes de même nom que celle implémentées par le serveur à l'autre bout) : normalement ce stub implémente l'interface annotée @WebService