Table of Contents
TP3 : Exo Web Services
Il s'agit d'écrire un service web “AccountService” qui représente un service de compte banquaire offrant les opérations suivantes :
- Account.java
public interface Account { public void deposit(float amount); public void withdraw(float amount); public float balance(); }
Ce service devant conserver un état, il n'est pas possible d'utiliser un service Web de type JWS dans ce cas Il va falloir réaliser un déploiement de type WSDD.
Environnement
Créez le fichier “env.sh” et positionnez la variable ROOT comme il faut. Puis charger l'environnement Tomcat/Axis dans votre shell en tapant la commande 'source env.sh'.
- env.sh
export ROOT=<???> export CATALINA_HOME=$ROOT/apache-tomcat-6.0.20 export PATH=$CATALINA_HOME/bin:$PATH export AXIS_HOME=$ROOT/axis-1_4 export AXISCLASSPATH=$AXIS_HOME/lib/axis.jar:$AXIS_HOME/lib/jaxrpc.jar:$AXIS_HOME/lib/commons-logging-1.0.4.jar:$AXIS_HOME/lib/commons-discovery-0.2.jar:$AXIS_HOME/lib/saaj.jar:$AXIS_HOME/lib/wsdl4j-1.5.1.jar export CLASSPATH=$AXISCLASSPATH:
Implantation du service web
Implantez trivialement l'interface “Account” dans la classe “AccountService”. Compilez votre service.
$ javac AccountService.java
Puis installez votre service web dans Axis :
$ cp AccountService.class $CATALINA_HOME/webapps/axis/WEB-INF/classes/
N'oubliez pas de rédémarrer le serveur web :
$ $CATALINA_HOME/bin/shutdown.sh ; $CATALINA_HOME/bin/startup.sh
Nota Bene : Cela est en fait suffisant pour installer son Service Web dans Axis, les stubs serveur étant générés dynamiquement !
Déploiement du service web
Créez les fichiers WSDD pour le déploiement “deploy.wsdd” et “undeploy.wsdd”. Vérifiez et complétez leur contenu.
- deploy.wsdd
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="AccountService" style="RPC"> <parameter name="className" value="AccountService"/> <parameter name="scope" value="???"/> <parameter name="allowedMethods" value="*"/> </service> </deployment>
- undeploy.wsdd
<undeployment xmlns="http://xml.apache.org/axis/wsdd/"> <service name="AccountService" /> </undeployment>
Nota Bene : La ligne importante dans ce fichier est celle qui régit la durée de vie du service web (scope). Par défaut, celle-ci est réduite à la durée de vie d'une requête (value=“request”) ; mais on peut l'augmenter à la durée de vie de la session (value=“session”) ou de celle du serveur (value=“application”).
Pour effectuer le déploiement :
$ java org.apache.axis.client.AdminClient -h localhost -p 8080 deploy.wsdd
Après cela, le service web doit être visible à l'URL http://localhost:8080/axis/services et normalement accessible à l'URL suivante : http://localhost:8080/axis/services/AccountService
Pour terminer le service web, il suffit de taper :
java org.apache.axis.client.AdminClient undeploy.wsdd
Programmation du client
En vous inspirant de HelloWorldClient.java, écrire un client Java testant votre service. Proposez une interface Web à base de Servlet/JSP (ou autre) permettant d'utiliser votre service web à l'aide d'un formulaire HTML.
Pour aller plus loin
Cherchez sur Internet un exemple de Service Web, dont vous disposez du fichier WSDL et implantez un client Java utilisant ce service !