Déploiement et Appel aux web services Java avec AxisDate de publication : 07/10/2006 , Date de mise à jour : 29/10/2007
Par
Mohamed KARAMI (karamimed.developpez.com)
Ce tutoriel est destiné aux débutants J2EE, il explique comment utiliser le framework Axis sous Apache Tomcat pour créer, déployer et consommer un web service en java.
I. Remerciements II. Lancement et configuration d'Axis II-A. Configuration de Tomcat II-B. Démarrage de Tomcat II-C. Démarrage d'Axis III. Méthode de déploiement 1 III-A. Création du web service III-B. Déploiement du web service III-C. Test du web service IV. Méthode de déploiement 2 IV-A. Compilation de la classe du web service IV-B. Définition du descripteur de déploiement IV-C. Déploiement du web service IV-D. Exécution du web service par son alias V. Consommer le web service en Java V-A. Création du fichier de description du web service "wsdl" V-B. Utilisation du générateur " WSDL2Java " V-C. Définition du client Java VI. Désactivation du web service Outils utilisés
Ressources
I. Remerciements
Merci à Neo41 pour sa lecture et ses corrections, à RideKick pour sa relecture. Merci à Ricky81 pour ses conseils, et un grand merci également à Nono40, réalisateur de l'éditeur xml.
II. Lancement et configuration d'Axis
Le serveur de déploiement " Axis " est installé comme une application Web au sein du moteur de servlets et de JSP " Apache Tomcat ".
II-A. Configuration de Tomcat
Avant de lancer Tomact vous devez vérifier que Tomcat pointe sur le JDK et non pas le JRE, car ceci peut causer une erreur assez fréquente concernant le fichier tools.jar (tools.jar est présent dans le dossier "lib" du JDK mais il n'existe pas dans le JRE), et voici l'erreur que vous pouvez avoir : "java.lang.RuntimeException: No compiler found in your classpath! (you may need to add 'tools.jar')".
Donc votre Java Virtual Machine doit être comme ceci : "JAVA_HOME\jre\bin\server\jvm.dll".
II-B. Démarrage de Tomcat
Vous devez, pour accéder aux possibilités de " Axis ", activer préalablement le serveur " Apache Tomcat " (j'utilise la version 5.5.17 de Tomcat).
Pour cela, sous Tomcat 4, vous double-cliquez sur : "dossierInstallation\Tomcat 4\bin\startup.bat".
Sous Tomcat 5.5.x, vous double-cliquez sur : "dossierInstallation\Tomcat 5.5\bin\tomcat5.exe".
Ou tout simplement, si le service Tomcat est installé, utiliser "Monitor Tomcat" puis le menu "Start Service".
II-C. Démarrage d'Axis
Pour installer Axis (j'utilise la version 1.4), décompresser le fichier "axis-bin-1_4.zip", puis copier le dossier "axis-1_4\webapps\axis" dans "dossierInstallation\Tomcat 5.5\webapps\", comme ça Axis sera une application web déployée sous Tomcat.
Il vous manquera la librairie "activation.jar" et d'autres optionnelles: "soap.jar" et "mail.jar",… que vous pouvez copier dans "dossierInstallation\Tomcat 5.5\common\lib\".
Pour vérifier la bonne installation et éventuellement accéder aux services web existants sur " Axis ", vous redémarrez Tomcat et vous tapez dans un navigateur : http://localhost:8080/axis.
Ensuite, vous pouvez cliquer sur " Validate " puis "List":
La validation teste l'existence des librairies requises par Axis:
III. Méthode de déploiement 1III-A. Création du web service
La première étape consiste à définir la classe du service web qui retournera au client la somme de 2 entiers.
La définition de cette classe est la suivante :
Utilisez un éditeur de texte simple, Kate sous Unix ou Bloc-notes sous Windows.
Attention, vous devez sauvegardez votre classe sous le fichier portant le même nom de la classe et suffixé par " jws " ! Ici, le fichier de sauvegarde sera donc : "sommer.jws".
III-B. Déploiement du web service
La deuxième étape consiste à déployer le service au sein d'un fournisseur de services web.
L'environnement d'exécution et de déploiement des services web que nous utilisons est, comme vous l'avez déjà constaté, l'outil " Axis ".
Le premier mode de déploiement sous " Axis " que nous allons mettre en oeuvre est le plus simple qui soit ; c'est le déploiement instantané par fichier " JWS ". Vous noterez qu'il n'est pas nécessaire de compiler le fichier source java.
Pour réaliser le déploiement, il suffit de copier le fichier "sommer.jws" dans le domaine applicatif de " Axis ". Le domaine d'application de " Axis " est : "dossierTomcat/webapps/axis", vous devez donc copier le fichier "sommer.jws" dans ce dossier.
Vous êtes désormais en mesure d'accéder à votre service à l'URL suivante :
http://localhost:8080/axis/sommer.jws.
Vous devez alors constater que votre service a bien été déployé sur " Axis " en ayant en retour la page " html " suivante :
Si vous cliquez sur ce dernier lien, vous verrez la définition " WSDL " (générée automatiquement par " Axis ") de votre service web.
III-C. Test du web service
La dernière étape consiste à mettre en oeuvre votre service qui est désormais accessible à travers tout le net !
Pour exécuter une méthode de votre service et obtenir la réponse " SOAP " correspondante, vous tapez l'expression suivante dans votre navigateur :
http://localhost:8080/axis/sommer.jws?method=getsomme&a=2&b=3
Par rapport à l'expression précédente, vous précisez ici le nom de la méthode à exécuter, sous la forme de la valeur de l'attribut " method " et vous précisez les valeurs des paramètres a et b.
La réponse affichée est le contenu " SOAP ", c'est-à-dire un fichier " XML " dont voici un extrait :
IV. Méthode de déploiement 2
Dans l'exercice précédent, nous avons mis en oeuvre un mode de déploiement entièrement pris en charge par " Axis ". Ce mode automatique de déploiement présente les contraintes suivantes : Nécessité de disposer des sources des classes dont on veut définir le ou les services. En effet, le mode de déploiement automatique d'Axis travaille sur la source des classes Java, Impossibilité de décrire des particularités de déploiement (classes publiques et privées).
Ce sont pour ces raisons, que nous devons parfois réaliser un déploiement explicite. Cela implique la définition d'un fichier particulier, appelé descripteur de déploiement du service web.
Ce fichier porte l'extension " wsdd " pour "Web Service Deployment Descriptor".
IV-A. Compilation de la classe du web service
La première étape consiste à compiler la classe que vous avez définie, renommer le fichier "sommer.jws" en "sommer.java" et compiler le par commande "javac sommer.java", après vous devez copier la classe résultante dans le dossier "jwsClasses" ou "Classes" dépendement de votre version du serveur Tomcat.
IV-B. Définition du descripteur de déploiement
Le descripteur de déploiement doit être placé dans le même dossier que le " .wsdl " définissant le service. Appelons ce descripteur " deploy.wsdd ". Son contenu sera minimalement celui-ci :
Expliquons les différents éléments :
IV-C. Déploiement du web service
Le descripteur de déploiement doit être maintenant pris en compte par le serveur " Axis " (i.e. le fournisseur de services) pour réaliser le déploiement du service.
Pour ce faire, il convient d'utiliser l'utilitaire " AdminClient " du serveur " Axis ".
La ligne de commande est alors :
"java org.apache.axis.client.AdminClient deploy.wsdd"
Si les librairies Axis ne sont pas spécifiées dans le classpath, vous devez le faire comme suit dans un fichier "deploy.bat" de préférence:
L'arborescense du dossier Axis (avec l'utilisation du classpath) devra être comme illustré dans la figure suivante :
Nous avons, lors de l'étape précédente, demandé au serveur " Axis " d'être en mesure de traiter toutes les requêtes " SOAP " correspondant à notre service " sommer ".
Cela signifie donc qu'à la réception d'une requête " HTTP-SOAP ", le serveur pourra appliquer la méthode spécifiée dans la requête à une instance de la classe correspondant à notre service (en lui passant, le cas échéant des valeurs).
Vous êtes désormais en mesure d'accéder à votre service à l'URL suivante :
http://localhost:8080/axis/services/sommer.
Le nom " sommer " correspond au nom du service que nous avons indiqué dans le descripteur de déploiement.
Vous pouvez alors constater que votre service a bien été déployé sur " Axis " en ayant en retour la page " html " suivante :
IV-D. Exécution du web service par son alias
La dernière étape consiste à mettre en oeuvre votre service qui est désormais accessible à travers tout le net !
Pour exécuter une méthode de votre service et obtenir la réponse " SOAP " correspondante, vous tapez l'expression suivante dans votre navigateur :
http://localhost:8080/axis/services/sommer?method=getsomme&a=2&b=3
Par rapport à la méthode précédente, vous précisez ici le nom du web service par son alias (ici "sommer").
La réponse affichée est le contenu " SOAP ", c'est-à-dire un fichier " XML " comme :
V. Consommer le web service en Java
Jusqu'à ce stade, nous avons toujours utilisé le navigateur Web pour invoquer les services et visualiser (sous le format SOAP) les résultats retournés.
Nous allons étudier maintenant, un autre mode de communication avec les services plus adapté à leur mise en oeuvre, et surtout à l'intégration avec d'autres applications. Ce deuxième modèle consiste à la mise en oeuvre des Services Web depuis le langage Java en générant automatiquement la définition du Proxy côté client. Cela sous-entend la création de toutes les interfaces et classes nécessaires à la mise en oeuvre du service depuis Java.
Ce modèle est caractérisé par:
V-A. Création du fichier de description du web service "wsdl"
Pour ce faire, nous utiliserons le même service précédent, dans le navigateur utiliser le menu "Fichier puis Enregistrer sous", Puis nommer le fichier "sommer.wsdl" dans le dossier "Tomcat 5.5\webapps\axis\WEB-INF".
V-B. Utilisation du générateur " WSDL2Java "
L'outil " Axis " qui permet la génération des définitions Java côté client et côté serveur, s'appelle " org.apache.axis.wsdl.WSDL2Java ". L'invocation depuis une fenêtre DOS, est la commande:
"java org.apache.axis.wsdl.WSDL2Java sommer.wsdl".
Remarque :
le fichier " sommer.wsdl " peut-être créé simplement, comme on l'a déjà fait, en sauvegardant le contenu de la fenêtre navigateur, lorsque l'on visualise la définition " wsdl " du service : http://localhost:8080/axis/services/sommer?wsdl .
L'outil " WSDL2Java " génère l'ensemble des définitions dans un sous-dossier correspondant au nom "targetNamespace="http://127.0.0.1:8080/axis/services/sommer"" du descripteur " wsdl ". En effet, les namespaces sont mappés en packages Java.
V-C. Définition du client Java
Avant de définir le client Java, je commence par clarifier quelques ambiguïtés qui peuvent vous passer par la tête:
A quoi il sert le Stub généré?
Ce fichier est le seul point d'entrée pour le web service, il contient toute l'information dont on a besoin pour invoquer le web service :noms des méthodes, types des paramètres et les types de retour, et c'est qui permet à l'auteur du web service de protéger son code
Aurais-je besoin des librairies d'Axis pour consommer le web service?
NON, c'est seulement le serveur déployant le web service qui doit contenir les librairies Axis
Quels sont les fichiers aux quels j'ai besoin pour consommer le web service?
Nous aurons seulement besoin des fichiers générés (Stub) par la commande wsdl2java, il faut juste importer ces fichiers dans l'application et utiliser les interfaces présentes dans ce Stub.
On définit maintenant le client Java qui met en oeuvre les classes générées lors de l'étape précédente.
Pour cela, votre client ressemblera à ceci :
Sous Eclipse vous aurez comme ceci (j'ai utilisé "http://127.0.0.1" au lieu de "http://localhost", c'est pourquoi j'ai le chemin généré "_1._0._0.127":
Pour connaître les noms des classes et interfaces à utiliser, vous devez examiner le contenu du dossier contenant les classes et interfaces générées ainsi que le fichier " wsdl " ayant permis cette génération.
VI. Désactivation du web service
Enfin pour retirer un service déployé, il suffit d'appliquer l'utilitaire " AdminClient ", créer un fichier " undeploy.wsdd " correspondant au service.
Le contenu du fichier " undeploy.wsdd " sera toujours le même, au nom de service près. Pour le service " sommer ", nous aurons :
Ensuite, la ligne de commande est simplement :
"java org.apache.axis.client.AdminClient undeploy.wsdd".
Bibliographies:
|
Copyright © karami. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.