Transcript Télécharger
1 ère Année Master SII – 2013/ 2014
TP2: Services Web
Création et déploiement de Services Web Java avec Axis (deuxième méthode)
I Déploiement explicite à l'aide du fichier Web Service Deployment Descriptor (wsdd).
I-1- Création du fichier .java Nous considérons le service Calculatrice : public class } } Calculatrice return (a+b); { public int somme(int a, int b){ Enregistrer la classe sous le nom Calculatrice.java Compiler
javac
Calculatrice.java I-2- Création d’un fichier descripteur de déploiement
wsdd.
Créer le fichier descripteur nommer
deployCalculatrice.wsdd
: xmlns ="http://xml.apache.org/axis/wsdd/" xmlns:java ="http://xml.apache.org/axis/wsdd/providers/java"> name =" Calculatrice " style="java:RPC"> name ="className" value=" Calculatrice "/> name ="allowedMethods" value="*"/>
Déploiement de votre service Web
Utiliser l'utilitaire « AdminClient » du serveur « Axis » pour le déploiement (mettre deployCalculatrice.wsdd dans le répertoire axis de Tomcat) : 1/5
Les fichiers deployCalculatrice.wsdd et Calculatrice.class doivent être dans le répertoire axis/WEB-INF/lib. Exécuter le fichier « deployServiceWSDD.bat » qui se trouve dans le répertoire « WEB INF/lib. Accéder à votre service à l’URL : http://localhost:8080/axis/services/Calculatrice. Vous pouvez alors constater que le service a été bien déployé sur « Axis ».
Exécution du service web par son alias
http://localhost:8080/axis/services/ Calculatrice?method= somme &a=12&b=8 Vérifier que le service est ajouté : o http://localhost:8080/axis/servlet/AxisServlet o puis List II Nous avons vu comment invoquer un service Web via le navigateur. Maintenant nous allons utiliser un autre mode de communication en utilisant le langage Java et en générant automatiquement la définition du Stub côté client. Ce mode est caractérisé par l’utilisation:
Consommation du service Web
du
stub
côté client et du
skeleton
côté serveur. Le stub est une classe coté client et le skeleton est son homologue coté serveur. des interfaces représentant les types des objets Java à manipuler
II-1- Récupération du fichier WSDL
Vous allez sur le navigateur, invoquer le service web Calculatrice ensuite récupérer le contenu de la page web est sauvegarder le dans le fichier Calculatrice.wsdl. Mettez ce fichier dans le dossier \webapps\axis\WEB-INF\lib" de Tomcat. Il doit être sous le même répertoire que WDSL2Java.
II-2- Utilisation du générateur WSDL2Java
Nous allons utiliser l’outil d’Axis appelé « org.apaché.axis.wsdl.WSDL2Java » qui permet la génération automatique des définitions Java côté client et côté serveur. Exécutez le fichier wsdl2java.bat qui se trouve dans le répertoire WEB- INF/lib. L'outil " WSDL2Java " génère automatiquement l'ensemble des classes et interfaces client dans un dossier "targetNamespace="http://localhost:8080/axis/services/ Calculatrice "" du descripteur " wsdl ". Pour consommer le service web, nous avons besoin des fichiers générés (Stub) par la commande wsdl2java, il faut juste importer ces fichiers dans l'application et utiliser les interfaces présentes dans ce Stub. 2/5
II-3- Définition du client Java
Maintenant nous allons écrire le client qui va appeler notre service. Nous allons travailler sous Eclipse. Créez un nouveau projet TP2, Créez un nouveau package et insérez les fichiers générées auparavant par la commande wsdl2java dans ce package. Ajouter les librairies manquantes ainsi que les fichiers : mail.jar, wsdl4j.jar, commons discovéry-0.2.jar et commons-logging-1.1.3.jar. Créer une nouvelle classe client pour invoquer le service
public class
CalculatriceClient {
public static void
main(String[] args) { // Création du service depuis le endpoint // Calculatrice
Service
correspond au nom du service dans le fichier "wsdl" Calculatrice
Service
service =
new
Calculatrice ServiceLocator(); Scanner entree =new Scanner (System.in); System.
out
.println (“Tapez deux valeurs”); int a = entree.nextInt() ; int b= entree.nextInt();
try
{ Calculatrice c = service.somme();
try
{ System.
out
.println( “la somme est “+ c.somme(a, b)); }
catch
(RemoteException e) { e.printStackTrace(); } }
catch
(ServiceException e1) { e1.printStackTrace(); } } } Une fois votre client écrit, compilez-le et exécutez-le.
5. Désactivation du service web
Pour désactiver ce service il faut un fichier undeploy.wsdd dont le contenu est :
Vérifier le service est désactivé En cas d'erreur, il faut ajouter à la variable système CLASSPATH tous les fichiers .jar se trouvant dans C:\Program Files\Apache Software Foundation\Tomcat5.0\webapps\axis\ WEB-INF\lib (Valeur est adaptée en fonction de vos chemins) : 4/5
Si les librairies Axis ne sont pas spécifiées dans le classpath, vous devez le faire comme suit, selon votre version d’Axis et Tomcat, dans un fichier "classpath.bat" comme suit :
set CATALINA_HOME=C:\temp\tomcat50-jwsdp set AXIS_HOME=C:\temp\tomcat50-jwsdp\webapps\axis\WEB-INF set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\activation.jar set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\mail.jar set CLASSPATH=%CLASSPATH%;%AXIS_HOME%\lib\axis.jar set CLASSPATH=%CLASSPATH%;%AXIS_HOME%\lib\axis-ant.jar set CLASSPATH=%CLASSPATH%;%AXIS_HOME%\lib\jaxrpc.jar set CLASSPATH=%CLASSPATH%;%AXIS_HOME%\lib\wsdl4j-1.5.1.jar set 0.2.jar CLASSPATH=%CLASSPATH%;%AXIS_HOME%\lib\commons-discovery set CLASSPATH=%CLASSPATH%;%AXIS_HOME%\lib\commons-logging 1.0.4.jar set CLASSPATH=%CLASSPATH%;%AXIS_HOME%\lib\saaj.jar set CLASSPATH=%CLASSPATH%;%AXIS_HOME%\lib\log4j-1.2.8.jar set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\xerces.jar set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\servlet api.jar set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\naming factory.jar
Exercice :
écrire un client qui consomme le service web de Google ; 5/5