|
Formation Java
WebServices |
Accueil > Formations > WebServices
Dans ce TD nous developperons un webservice simple capable de renvoyer la version en majuscule d'une chaine envoyee par le client lors de l'appel du webservice.
Nous devrons d'abord developper le webservice, en Java et en generant quelques fichiers XML, et ensuite deployer le webservice dans un conteneur de webservice, installe dans le TD de preparation.
Pour developper notre webservice en Java nous suivrons la trame suivante:
La plupart des etapes de developpements sont automatisees par l'utilisation d'outils comme Wsdl2Java qui generent automatiquement des squelettes de classes Java pour un webservice donne.
Par ailleurs nous utiliserons Ant pour automatiser la plupart des taches.
Pour realiser le projet, il faut creer une structure de repertoire comme decrit ci apres:
/
|-apache
| `...
`-webservices
`-td1
|- build
|- dist
|- src
|- build.properties
`- build.xml
Il faut aussi telecharger le fichier Ant du projet et le fichier de proprietes du fichier Ant:
L'exemple a ete realise en utilisant comme nom de package fr.iutnice.lpmi.ws.td1. Il est conseille d'utiliser le meme.
Dans cette etape, il faut creer les classes Java charge de realiser le webservice, en l'occurence transformer une chaine en majuscule, nommee UpperCase dans cet exemple.
Il nous faut developper une interface qui contient les signatures de methodes accessibles par le webservice et une classe d'implementation de cette interface.
Pour des raisons de commdodites, l'interface UpperCase doit respecter les conventions RMI :
Note: Si l'interface ne respectait pas d'emblee les conventions RMI, c'est l'outil de generation de code (Wsdl2Java) qui genererait une interface RMI a partir de notre interface de depart.
Creer l'interface UpperCase.java, contenant les signatures de methodes pour accomplir le service demande.
Creer la classe d'implementation UpperCaseImpl.java, qui implemente les methodes declarees dans l'interface.
Apres avoir developpe les classes Java, il faut generer un fichier WSDL a partir de l'interface cree precedemment avec l'outil Java2Wsdl.
Le fichier WSDL sera utilise par les clients pour communiquer avec le webservice :
Le fichier WSDL genere contiendra les elements WSDL appropries :
Tout le necessaire pour utiliser le webservice et le decrire aupres des clients.
Si les methodes de l'interface font reference a d'autres classes, Java2WSDL generera les types XML appropries pour representer ces classes et les types imbriques/herites. Cet outil supporte les types JAX-RPC complexes (Javabeans), classes heritees, enumerations, tableaux et les Holder(?).
Il existe aussi une tache Ant pour integrer Java2WSDL dans Ant. C'est cette fonctionnalite qui est utilisee dans le fichier build.xml.
Pour generer le fichier WSDL, utiliser la commande suivante dans le repertoire webservices/td1:
ant generate-wsdl
Le fichier WSDL doit avoir ete genere dans le repertoire build.
A partir du fichier WSDL il est possible de creer les talons clients et serveur appropries pour le webservice avec la commande Wsdl2Java.
Pour notre usage, le fichier build.xml est configure pour generer pour nous les classes en tapant la commande:
ant generate-java
Ce qui genere les fichiers suivants dans le repertoire build/src:
Maintenant que tous ces fichiers ont ete crees, tout est pret pour utiliser le webservice.
Prenez le temps de regarder comment sont ecrits ces fichiers puis passer a la suite.
Executer la cible build du fichier build.xml:
ant build
A l'issue de cette commande le repertoire dist doit contenir un fichier ws-td1.jar.
Il faut maintenant installer le webservice dans Tomcat.
Pour cela executer la cible deploy du fichier build.xml:
ant deployCette cible copie le fichier JAR dans le repertoire apache/tomcat/webapps/axis/WEB-INF/lib et declenche l'installation du webservice aupres d'Axis.
Normalement le webservice doit etre affiche dans la liste des
webservices installes, a l'adresse ![]()
http://127.0.0.1:8080/axis/servlet/AxisServlet.
Tester le webservice: http://127.0.0.1:8080/axis/services/ws-td1?method=uppercase&in0=toto