index

ws : Web Services

C'est simple avec JAX-WS 2.0 intégré dans Java SE 6 .

Comment écrire un web Service


Les annotations @WebMethod, @WebResult et @WebParam sont facultatifs. Si ils sont omis, des valeurs par defaut sont retenues.

Ensuite , il faut prevoir une methode pour lancer le ws :
(Et oui, java comporte un serveur http en standard! Mais ou est passé le soap ? On rève!)
Dans une classe com.bg.test.webService.MainWS par exemple, mettre la methode main:

La compilation est un peu plus délicate. Soit on appelle directement l'outil wsgen qui est fourni dans le jdk; soit on utilise ant.
Il faut bien compiler avec les options target et source pour 1.6
Je suppose que le directory jdk1.6.xx/bin est dans le path system (Pour trouver l'utilitaire wsgen)

Maintenant, il faut tester:
Dans notre exemple:
http://localhost:8085/bg/Validation?WSDL
Il faut trouver un client soap générique pour tester plus finement le WS, ou bien developper un client ....

Comment écrire un client d'un web Service

Après avoir déployer le web service précédent, écrivons un client de ce web service, pouvant marcher en standalone.
Pour cela, il faut utiliser un utilitaire disponible dans le jdk1.6xxx : wsimport
Je préfère l'utiliser dans une tâche ant.

Ensuite, on peut contruire un jar que nous rajouterons au classpath de notre futur client:

Ecrivons maintenant le code de test du client: ( En utilisant les parametres du serveur defini precedemment, avec la Classe Validation, localhost et port 8083).
Ne pas oublier de mettre la jar généré precedemment dans le path.

Rajoutons quelques target, pour bien s'assurer que l'on compile en 1.6.

Déployer un web service dans un EJB 3.0

Il faut en plus de l'annotation @webservice, rajouter l'annotation @stateless
Integrer l'ejb dans un .jar puis dans un .ear
Aller dans dans la console d'administration de glassfish (http://localhost:4848/ ) et webservice. Là votre web service doit apparaitre. En clickant dessus, apparait URI d'adresse d'extremité (Par exemple "/ValidationService/Validation"). Prendre le Virtual Host assocé au ear, rajouter l'URI d'extrémité + "?wsdl"; et vous devez obtenir le wsdl du service en question.

Références