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 !