Barre Formation IN2P3
École franco-maghrébine 2003 WebServices 13-17 octobre 2003

Travaux pratiques

Précédent

tp1c

Suivant

Enoncé :

Créer un WebService (WS) qui a une seule méthode: String carteDeVisite().

Il retourne la carte de visite ("nom:prenom:email") du créateur du WS.

La réalisation du WS peut se faire par un simple fichier .jws (voir la documentation axis).

Refaire le même WS en utilisant un fichier .wsdd (voir la documentation axis).

Aide :

La documentation axis est accessible à l'url suivant : "C:\axis\docs\index.html".

Créer un dossier "tps" dans votre dossier "Mes documents", il y est fait référence dans le reste des corrigés.

Pour chaque question, créer un sous-dossier "tp1c" par exemple pour ranger vos fichiers concernant la question.

Vous pouvez utiliser un éditeur de code "JEdit" disponible sur le CD-ROM.

Il faut configurer votre environnement pour compiler les clients WS.

Vous pouvez créer un fichier "setenv.bat" dans "tps" avec le contenu suivant :

rem initialisation du CLASSPATH
set AXIS_HOME=C:\axis
set AXIS_LIB=%AXIS_HOME%\lib
set DOM4J_HOME=C:\dom4j
set DOM4J_LIB=%DOM4J_HOME%
set XERCES_HOME=C:\xerces
set XERCES_LIB=%XERCES_HOME%

set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;%AXIS_LIB%\commons-logging.jar
set AXISCLASSPATH=%AXISCLASSPATH%;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar
set AXISCLASSPATH=%AXISCLASSPATH%;%AXIS_LIB%\wsdl4j.jar

set CLASSPATH=%CLASSPATH%;%AXISCLASSPATH%
set CLASSPATH=%CLASSPATH%;%XERCES_LIB%\xml-apis.jar;%XERCES_LIB%\xercesImpl.jar;%XERCES_LIB%\xercesSamples.jar
set CLASSPATH=%CLASSPATH%;%DOM4J_LIB%\dom4j-full.jar

Correction :

Contenu du fichier tp1c/CarteDeVisite.jws.

public class CarteDeVisite {
    private static String nom = "Rouet";
    private static String prenom = "Jean-René";
    private static String email = "rouet@in2p3.fr";
    
    public String carteDeVisite() {
        return this.nom+":"+this.prenom+":"+this.email;
    }
}

Installation du WS :

Copier le fichier dans "c:\axis\webapps\axis\".

Ouvrir l'url "http://localhost:8080/axis/CarteDeVisite.jws".

Contenu du fichier tp1c/CarteDeVisite2.java.

package tp1c;
public class CarteDeVisite2 {
    private static String nom = "Rouet";
    private static String prenom = "Jean-René";
    private static String email = "rouet@in2p3.fr";

    public String carteDeVisite() {
        return this.nom+":"+this.prenom+":"+this.email;
    }
}

Contenu du fichier tp1c/deploy.wsdd.

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

 <service name="CarteDeVisite2" provider="java:RPC">
  <parameter name="className" value="tp1c.CarteDeVisite2"/>
  <parameter name="allowedMethods" value="*"/>
 </service>

</deployment>

Ouvrir un invite de commandes dans le dossier "tps".

javac tp1c/CarteDeVisite2.java
java org.apache.axis.client.AdminClient tp1c\deploy.wsdd

Copier le fichier tp1c/CarteDeVisite.class dans "c:\axis\webapps\axis\WEB-INF\classes\tp1c".

Ouvrir la page d'accueil d'axis et regarder les services déployés, vous devez trouvez le votre.

Pour information, voici le code d'un client écrit en php en utilisant les libraires SOAP de PEAR (http://pear.php.net/). Et aussi en utilisant NuSOAP.

Il faut remplacer le contenu de PEAR dans Easyphp par celle fournie (fichier ZIP).

Contenu du fichier tp1c/tp1c.php.

<?php
echo "Using PEAR/SOAP<br>";
include("SOAP/Client.php");

$client = new SOAP_Client('http://localhost:8080/axis/services/CarteDeVisite2');

$params = array();
$options = array('trace'=>1);

echo $client->call('carteDeVisite', $params, $options);

echo "<br><xmp>";
echo $client->wire;
echo "</xmp>";
/*
echo "Using NuSOAP<br>";
include("nusoap.php");

$params = array();
$soapclient = new soapclient('http://localhost:8080/axis/services/CarteDeVisite2');
echo $soapclient->call('carteDeVisite',$params);
echo "<br><pre>";
echo htmlentities($soapclient->request);
echo "</pre>";
*/
?>

École franco-maghrébine 2003 WebServices 13-17 octobre 2003