Vous êtes sur la page 1sur 3

18/12/2019 TP WebServices

TP WebServices
_______________________________

Fabrice Clari (Fabrice.Clari@zaltana.fr)

Partie 1 - Décembre 2007, remise a jour par Francoise Baude, Novembre 2008

Le but de cette première partie est de vous faire découvrir quelques API (Application Programmer
Interface) qui vous permettrons de :

créer des services web ;


consommer des services web (c'est-à-dire écrire un client).

1 - Préparation du TP

Un JDK et Jakarta Tomcat sont nécessaires. Les exercices suivants ont été testés avec la version
le JDK 6.0_02 de Sun Microsystems et Tomcat 5.5.25 (que nous devriez avoir déjà installés sur
vos postes de travail).

1.1 - Installation de Tomcat

Durant ce TP, nous allons utiliser Tomcat (http://jakarta.apache.org/tomcat) comme serveur web et
container de servlets/JSP.

Afin d'installer Tomcat sur votre poste de travail, récupérez le kit d'installation ici. L'installation de
Tomcat est très simple, un simple double-clic sur l’exécutable suffit.

Si vous voulez changer des paramètres de la configuration (comme le port sur lequel Tomcat
écoute par exemple), éditez le fichier %tomcat%\conf\server.xml.

Nous devrons demarrer le serveur tomcat, et pour cela, il faut lancer le script startup qui se trouve
dans le sous-repertoire bin. Pendant la suite de ce TP, nous considérerons que :

%tomcat% correspond au chemin du répertoire de Tomcat ;


Tomcat écoute sur le port 8080.

1.2 - Installation d'Axis

Nous allons également utiliser l'API Axis (http://xml.apache.org/axis) pour les services web.
Récupérez ici l'installation.
Après avoir dézippé le fichier d'installation, placer le répertoire axis se trouvant dans webapps
dans %tomcat%\webapps.

Dans votre variable d'environnement CLASSPATH, rajoutez toutes les librairies contenues dans le
répertoire axis-1_4\lib. Pour vous éviter de taper à chaque fois le chemin menant à Axis, vous
pouvez ecrire un script shell, permettant de définir une variable AXIS_LIB à laquelle vous ferez
référence pour positionner correctement votre CLASSPATH. Rajoutez également servlet-api.jar
qui se trouve dans %tomcat%\common\lib ainsi que activation.jar (cliquez sur le lien pour
récupérer l’archive). De plus, placer activation.jar dans %tomcat%\shared\lib.

Attention : Java est souvent sensible aux espaces dans les noms de fichiers/répertoires. Veillez donc à ce que
Tomcat et Axis soient installés dans des répertoires dont les noms ne contiennent pas d’espace.
deptinfo.unice.fr/~baude/WS/ws1.html 1/3
18/12/2019 TP WebServices

Vous pouvez maintenant tester si Axis fonctionne : http://localhost:8080/axis.


De même, pour valider si la configuration convient : http://localhost:8080/axis/happyaxis.jsp. Si l'installation
est correcte, vous devez obtenir 2 avertissements (warning) spécifiant qu'il manque deux librairies.

2 - Premiers services web, premiers clients

2.1 - Ecriture d'un service web

Dans un premier temps, nous allons voir la manière la plus simple pour écrire un service web.

Depuis un éditeur de texte, écrivez une classe simple Java, avec une méthode publique (echo ou
addition par exemple) mais qui renvoie un retour (Ce sera plus facile pour tester ensuite que le
service fonctionne correctement!). Sauvez le fichier en mettant jws comme extension, puis placez
le fichier dans le répertoire %tomcat%/webapps/axis.
Ensuite, depuis un navigateur, essayez l'URL http://localhost:8080/axis/VotreClasse.jws?wsdl.
Vous obtenez alors un document WSDL décrivant la méthode de votre classe qui est maintenant
exposée. Bien sûr, seules les méthodes non privées sont exposées. Essayez de repérer dans ce
document WSDL votre méthode exposée, les messages (décrivant la requête et la réponse), les
types…

Vous venez de créer un fichier JWS (Java Web Service), ce qui correspond à la manière la plus
simple de créer et déployer un service web avec l'API Axis. Cependant, cette solution présente
des inconvénients : le code source est nécessaire (vous ne pouvez pas placer une classe déjà
compilée, et vous ne pouvez aucunement configurer le service web). La deuxième étape va
consister à créer un service web à partir d’une classe Java que vous aurez au préalable compilée

Nous allons donc maintenant voir comment utiliser des fichiers de configuration pour déployer un
service web.
Reprenez votre fichier jws, sauvez-le en .java et compilez-le. Vous devrez placer la classe
compilee dans le sous-repertoire classes qui se situe sous webapps/axis. Nous allons maintenant
écrire un fichier WSDD (Web Service Deployment Descriptor). Dans celui-ci, nous pourrons
préciser -entre autres- quelle est la classe que nous exposons, qu'elles sont les méthodes qui sont
accessibles et quel est le "scope" de l'objet (un peu à la manière des servlets/jsp : quand l'objet
est instancié sur le serveur, l'est-il pour chaque requête, pour chaque session ou chaque
application ? Des handlers peuvent également être définis, mais nous y reviendrons plus tard
dans le TP.

Un exemple de fichier WSDD :

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="SimpleWS" provider="java:RPC">
<parameter name="className" value="SimpleWS"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>

La value du parameter "className" est bien sur le nom du fichier .class que vous avez
prealablement place dans le sous-repertoire classes.
Une fois le fichier WSDD écrit, nous pouvons déployer le service web grâce à l'outil AdminClient.
Notez que par défaut et pour des raisons de sécurité, vous ne pouvez déployez des services que
depuis l'hôte sur lequel Axis est installé. Il faudra que le classpath soit correctement positionne
(rappel, on l'a prepare au debut du TP) pour que vous arriviez a faire s'executer AdminClient

deptinfo.unice.fr/~baude/WS/ws1.html 2/3
18/12/2019 TP WebServices

Voilà le service web déployé. Pour s'en assurer, rendez-vous sur


http://localhost:8080/axis/servlet/AxisServlet ; page qui présente les services web déployés. Votre
classe devrait apparaître sur cette page.

Les fichiers WSDD servent également à retirer des services web déployés d'un serveur. Ecrire un
tel fichier comprenant une balise "undeployment" pour justement supprimer votre service Web du
serveur.

2.2 - Ecriture d'un client

Prochaine seance.
En attendant, pour invoquer une methode offerte par votre service web il suffit de suffixer son URL
par une invocation de la methode que vous voulez executer => method=nomDeLaMethode.
Nous avons jusqu'à présent vu les services web côté serveur, sans les tester. Nous allons
maintenant écrire un client qui nous permettra d'interroger ces services. Pour cela, inspirez-vous
du code de la classe TestClient, présent dans le répertoire axis-
1_4\samples\userguide\example1, pour écrire le client de votre service web précédemment
déployé. Une fois votre client écrit, compilez-le et exécutez-le.

deptinfo.unice.fr/~baude/WS/ws1.html 3/3

Vous aimerez peut-être aussi