25.  EJB et Eclipse 27. JPA et Eclipse Imprimer Sommaire Consulter avec table des matières Développons en Java avec Eclipse   v 0.80  
Copyright (C) 2003-2007 Jean-Michel DOUDOUX   

 

26. Les services web et Eclipse

 

chapitre 2 6

 

 

Ce chapitre propose le développement de services web avec Eclipse essentiellement avec Axis avec ou sans utilisation d'un plug-in dédié.

Ce chapitre contient plusieurs sections :

 

26.1. La mise en oeuvre manuelle d'Axis

Cette section va mettre en oeuvre les outils suivants sous Windows :

  Version utilisée dans cette section
Eclipse 3.2.1
WTP 1.5.1
JDK 1.5_07
Axis 1.4
Tomcat 5.0

 

26.1.1. La configuration de l'environnement

Téléchargez le fichier axis-bin-1_4.zip et le décompresser dans un répertoire du système, par exemple c:\java.

Créer une nouvelle entité de serveur si aucun serveur n'est déjà défini dans Eclipse. L'exemple de cette section va mettre en oeuvre Tomcat 5.0.

Créer une nouvelle entité de type « Serveur/Serveur » puis cliquez sur le bouton « Suivant ».

Sélectionnez le type de serveur parmi ceux proposés puis cliquez sur le bouton « Suivant ».

Cliquez sur « Parcourir » pour sélectionner le répertoire d'installation de Tomcat.

Pour utiliser Tomcat, il est nécessaire de sélectionner un JDK pour permettre à Tomcat d'utiliser certains outils. Si aucun JDK n'apparaît dans la liste déroulante, cliquez sur le bouton « JRE installés ».

Cliquez sur le bouton « Ajouter »

Cliquez sur le bouton « Parcourir »

Sélectionnez le répertoire d'installation du JDK et cliquez sur le bouton « OK ».

Eclipse renseigne automatiquement les informations extraites à partir du JDK. Cliquez sur le bouton « OK ».

Cliquez sur le bouton « OK » puis s électionnez le JDK créé dans la liste déroulante

Cliquez sur le bouton « Terminer »

Le nouveau serveur apparaît dans la branche serveurs de la vue « Explorateur de package ».

 

26.1.2. La création d'un projet de type web

Créez une nouvelle entité de type « Web/Projet Web dynamique »

Cliquez sur le bouton « Suivant »

Saisissez le nom du projet puis cliquez sur le bouton « Suivant »

Cliquez sur le bouton « Suivant »

Cliquez sur le bouton « Terminer »

Lisez la licence et si vous l'acceptez, cliquez sur le bouton « J'accepte ».

Cliquez sur la case à cocher « Mémoriser ma décision » puis sur le bouton « Oui »

La perspective « J2EE » s'ouvre et le projet est affiché dans la vue « Explorateur de projets »

 

26.1.3. La configuration du projet

Créez un répertoire nommé « classes » dans le répertoire WEB-INF du projet.

Dans les propriétés du projet, sélectionnez « chemin de génération Java », cliquez sur l'onglet « Source », sélectionnez dans la zone de texte « Dossier de sortie par défaut » le chemin du répertoire « classes » puis cliquez sur le bouton « OK ».

Remplacez le fichier WEBContent\WEB_INF\web.xml par celui présent dans le sous répertoire webapps\axis\WEB-INF du répertoire d'installation d'axis.

Copiez les fichiers du sous répertoire webapps\axis\WEB-INF\lib du répertoire d'installation d'axis dans le répertoire WEBContent\WEB-INF\lib.

Dans les propriétés du projet, sélectionnez « Chemin de génération Java » puis cliquez sur l'onglet « Bibliothèques »

Cliquez sur le bouton « Ajouter une bibliothèque »

Sélectionnez « Bibliothèque utilisateur » puis cliquez sur le bouton « Suivant ».

Cliquez sur le bouton « Bibliothèque utilisateur ... »

Cliquez sur le bouton « Nouveau ».

Saisissez le nom de la bibliothèque, par exemple « Bibliothèque Axis » et cliquez sur le bouton « OK ».

Cliquez sur le bouton « Ajouter des fichiers jar ... ».

Sélectionnez les fichiers .jar du répertoire lib et cliquez sur le bouton « Ouvrir »

Cliquez sur le bouton « OK ».

Cliquez sur le bouton « Terminer ».

Cliquez sur le bouton « OK ».

 

26.1.4. La création d'une nouvelle classe

Créer une nouvelle entité de type « classe ».

Saisissez le code d'une méthode nommée additionner() :

Exemple :

      public int additionner(int valeur1, int valeur2) {
            return valeur1 + valeur2;
      }

Dans le répertoire WEB-INF du projet, créer un répertoire deploy. La création de ce répertoire n'est pas obligatoire mais il permet de rassembler tous les fichiers de déploiement d'Axis.

Dans ce répertoire deploy, créez un fichier nommé Calculer.wsdd.

Saisissez le contenu du fichier :

Exemple :
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <service name="CalculerWS" provider="java:RPC" style="wrapped" use="literal">
    <parameter name="className" value="com.jmdoudoux.test.axis.Calculer" />
    <parameter name="allowedMethods" value="*" />
    <parameter name="scope" value="Request" />
  </service>
</deployment>

Créez un fichier undeployCalculer.wsdd dans le répertoire deploy et saisissez son contenu :

Exemple :
<undeployment xmlns="http://xml.apache.org/axis/wsdd/">
  <service name="CalculerWS" />
</undeployment>

 

26.1.5. Le lancement de l'application web

Dans la vue « Serveurs », sélectionnez le serveur Tomcat et utiliser l'option « Ajouter et supprimer des projets ... » du menu contextuel.

Cliquez sur le bouton « Ajouter > » pour faire basculer le projet testWS dans la liste des projets configurés, puis cliquez sur le bouton « Terminer ».

Cliquez sur le bouton  pour démarrer le serveur.

 

26.1.6. Le déploiement du service dans Axis

Le plus simple est de créer un script Dos qui va se charger du déploiement. Créez un fichier adminclient.bat dans le répertoire WEB-INF/deploy de la webapp et saisissez le code de ce script :

Exemple :
@echo off
cd "C:\Documents and Settings\jumbo\workspace\testWS\WebContent\WEB-INF\deploy"
set CLASSPATH=.;..\lib\axis.jar;..\lib\axis-ant.jar;..\lib\commons-discovery-0.2.jar;
..\lib\commons-logging-1.0.4.jar;..\lib\jaxrpc.jar;..\lib\log4j-1.2.8.jar;
..\lib\saaj.jar;..\lib\wsdl4j-1.5.1.jar
java org.apache.axis.client.AdminClient -s /testWS/services/AdminService %1%.wsdd

Adaptez simplement le chemin du répertoire deploy à votre contexte.

Pour exécuter ce script dans Eclipse, il faut utiliser l'option « Outils externes / Outils externes » du menu principal « Exécuter ».

Saisissez le nom de la configuration, par exemple « deploy Calculer »

Sélectionnez l'emplacement du script et saisissez dans la zone de texte Arguments « deployCalculer ».

Cliquez sur le bouton « Exécuter ».

Créez de la même façon une configuration « undeploy Calculer » qui appelle le script adminclient.bat avec l'argument undeployCalculer.

La console affiche le résultat des traitements de déploiement

- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

Processing file deployCalculer.wsdd

<Admin>Done processing</Admin>

Le message d'avertissement n'est pas important pour les besoins du service web.

 

26.1.7. La vérification du déploiement du service web

Ouvrez un navigateur et saisissez l'url http://localhost:8080/testWS/services

Le service web CalculerWS apparaît dans la liste des services.

Cliquez sur le lien wsdl du service pour afficher la description du service.

Saisissez l'url http://localhost:8080/testWS/services/CalculerWS?method=additionner

La réponse contient une erreur puisque les paramètres de la méthode ne sont pas fournis.

Saisissez l'url :
http://localhost:8080/testWS/services/CalculerWS?method=additionner&valeur1=10&valeur2=20

La réponse SOAP contient le résultat de l'exécution du service.

 

26.1.8. La modification du type du service web

Appelez  la configuration externe « undeploy calculer » : la console affiche les traitements

- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

Processing file undeployCalculer.wsdd

<Admin>Done processing</Admin>

Modifiez le fichier Calculer.wsdd en remplaçant style=”wrapped” par style=”document” et enregistrez les modifications.

Utilisez la configuration externe « deploy Calculer » pour redéployer le service

Appelez l'url http://localhost:8080/testWS/services/CalculerWS?wsdl

Le format du fichier wsdl est adapté par Axis en fonction du format précisé.

 

26.2. La consommation du service Web en .Net

Sous Visual Studio 2005, créez un nouveau projet de type « Visual C# / Windows / Windows Application » nommé TestWSAxis :

Le projet est créé avec une fenêtre principale vide

Sélectionnez l'option « Add new DataSource » du menu principal « Data »

Sélectionnez « Web Service » et cliquez sur bouton « Next ».

Saisissez l'url http://localhost:8080/testWS/services/CalculerWS?wsdl et cliquez sur le bouton « Go ».

Le document wsdl est analysé et les méthodes trouvées sont affichées.

Saisissez le nom CalculerWS et cliquez sur le bouton « Add Reference ».

Une « Web Reference » concernant le service web est ajoutée. Renommez la en CalculerWS.

Visual Studio a créé un fichier Reference.cs dans le sous répertoire Web References\CalculerWS du projet. Ce fichier contient une classe qui fait office de proxy vers le service web. Le contenu de ce fichier est automatiquement généré par Visual Studio à partir du wsdl du service web.

Dans la fenêtre du projet, ajouter un composant de type TextBox et un composant de type Button.

Ajouter un événement sur le clic du bouton en double cliquant dessus. L'éditeur s'ouvre sur la méthode générée.

Ajouter une clause using concernant la web reference générée.

using TestWSAxis.CalculerWS;

Dans le corps de la méthode, saisissez le code de l'appel du service web.

Exemple :
        CalculerService cs = new CalculerService();
        int resultat = cs.additionner(10, 20);
        textBox1.Text = ""+resultat;

Remarque : ce code est spartiate puisqu'il ne contient aucune gestion des erreurs qui peuvent survenir dans ces traitements.

Appuyer sur la touche F5 pour compiler le projet et l'exécuter.

 

26.3. Le développement de services web avec WTP 1.0

Le plug in WTP propose plusieurs fonctionnalités pour faciliter le développement de services web.

 

26.3.1. Convertir une classe en service web

Le plug-in propose de convertir automatiquement une classe en un service web, reposant sur Axis du groupe Apache Jakarta.

Il faut sélectionner la classe et utiliser l'option « Nouveau/Autre ... »

Sélectionnez « Services Web/Service Web » et cliquez sur le bouton « Suivant »

Cochez « Générer un proxy », « Tester le service web » et « Contrôler le service web » et cliquez sur le bouton « Suivant ».

Par défaut, la classe sélectionnée est utilisée. Cliquez sur le bouton « Suivant ».

Le bouton « Editer » de la partie « Sélection du déploiement côté serveur » permet de sélectionner le serveur et l'environnement d'exécution.

Une fois le serveur sélectionné, cliquez sur le bouton « OK ».

Cliquez sur le bouton « Suivant » pour afficher la page « Identité du bean Java de service web » de l'assistant

Cette page permet de sélectionner les informations qui composeront le fichier .wsdl. Cliquez sur le bouton « Suivant ».

L'assistant génère les fichiers correspondant au service.

Une confirmation est demandée dans le cas d'un remplacement d'un descripteur existant.

La page suivant de l'assistant permet de demander le test du service Web.

Cliquez sur le bouton « Lancer » pour démarrer le service dans le serveur.

La vue Explorateur de services web s'ouvre

Cliquez sur le bouton « Suivant » de l'assistant.

La page « Page Proxy de service web » permet fournir des précisions sur le proxy qui sera généré. Cliquez sur le bouton « Suivant »

Cette page permet de tester le proxy généré. Cliquez sur le bouton « Suivant »

Cette page permet de demander la publication du service web. Cliquez sur le bouton « Terminer »

La vue « Web Services Test Client » s'ouvre. Il suffit de cliquer sur une méthode dans la partie « Methods », par exemple la méthode additionner().

La partie « Inputs » permet de saisir les valeurs des deux paramètres de la méthode sélectionnée.

Il suffit de saisir les deux valeurs et de cliquer sur le bouton « Invoke »

La vue « Moniteur TCP/IP » s'ouvre et affiche de détails de l'appel du service web.

Il est possible de modifier le format d'affichage de la requête et de la réponse en utilisant les listes déroulantes.

Le résultat de l'appel au service web s'affiche dans la partie « Result » de la vue « Web Services Test Client »

La vue « Explorateur de services web » permet d'obtenir des informations sur les services web.

Pour afficher cette vue, il suffit de sélectionner le fichier .wsdl du services web dans le répertoire WebContent/wsdl et d'utiliser l'option « Services web/Tester avec un explorateur de services web ».

Il suffit de cliquer sur une méthode du service pour la tester.

Il suffit de saisir les paramètres et de cliquer sur le bouton « OK ».

Le service est appelé avec les paramètres et le résultat est affiché dans la partie « Statut »

En cliquant sur le lien « Source » est est possible d'affiche la requete et la réponse SOAP.

 

26.3.2. Les différentes fonctionnalités sur les services web

Le menu contextuel « Services web » du fichier .wsdl propose plusieurs fonctionnalités.

L'option « Services web/Publier un fichier WSDL » permet d'enregistrer le service web dans un annuaire UDDI

L'option « Services web/Générer un client » permet de générer une application web pour tester le service web. Il est aussi possible de sélectionner l'option « Nouveau/Autre » du menu contextuel du fichier .wsdl.

Un assistant permet de saisir les caractéristiques de l'application à générer.

L'option « Contrôler le service Web » permet de lancer le Moniteur TCP/IP. Cliquez sur le bouton « Suivant »

Cliquez sur le bouton « suivant »

Cliquez sur le bouton « Suivant »

Cliquez sur le bouton « Suivant » pour permettre à l'assistant de générer les premières entités.

Cliquez sur le bouton « Terminer » pour générer les dernières entités, publier l'application sur le serveur et ouvrir la vue « Web Services Test Client »

L'option « Services web/Générer un squelette de bean Java » permet de générer une implémentation d'une description d'un service web à partir d'un fichier .wsdl

Cliquez sur le bouton « Suivant »

Cliquez sur le bouton « Suivant »

Cliquez sur le bouton « Suivant »

Cliquez sur le bouton « Suivant »

Cliquez sur le bouton « Terminer ». Le fichier CalculSoapBindingImpl.java est généré

Exemple :
/** 
* CalculSoapBindingImpl.java 
* 
* This file was auto-generated from WSDL 
* by the Apache Axis 1.2.1 Jun 14, 2005 (09:15:57 EDT) WSDL2Java emitter. 
*/ 

package com.jmd.test.wtp; 

public class CalculSoapBindingImpl implements com.jmd.test.wtp.Calcul{ 
  
  public long additionner(int a, int b) throws java.rmi.RemoteException { 
    return -3; 
  } 
 
  public int soustraire(int a, int b) throws java.rmi.RemoteException { 
    return -3; 
  } 
 
  public double diviser(int a, int b) throws java.rmi.RemoteException { 
    return -3; 
  } 
 
  public long multiplier(int a, int b) throws java.rmi.RemoteException { 
    return -3; 
  }  
} 

 

26.3.3. L'explorateur de services web

Il est possible de lancer « l'Explorateur de services web » en utilisant l'option « Exécuter/Explorateur de services web » du menu principale

En cliquant sur « UDDI - Page principale », il est possible d'interroger un annuaireUDDI.

Cette vue permet d'explorer trois types d'entités liées au service web :

Sélectionner l'annuaire et cliquez sur le bouton « OK »

Cliquez sur « WSIL – Page principale »

Cliquez sur « WSDL – Page principale »

Il suffit de cliquer sur le lien « Parcourir » pour ouvrir une boîte de dialogue permettant de sélectionner le fichier .wsdl.

Il suffit de sélectionner le projet de l'espace de travail puis de sélectionner le fichier .wsdl de ce projet à utiliser

Cliquez sur le bouton « OK »

Cliquez sur le bouton « OK »

Il est aussi possible d'appeler un service web externe. Par exemple : http://www.dataaccess.com/webservicesserver/conversions.wso?WSDL

Saisissez l'url du fichier .wsdl et cliquez sur le bouton « OK »

Cliquez sur le lien " NumberToWord ".

Saisissez un nombre et cliquez sur le bouton « OK »

Le service web est appelé avec les paramètres fournis et le résultat est affiché dans la partie « Statut ».

 

26.3.4. L'éditeur de fichier .wsdl

Il faut créer une nouvelle entité de type XML/WSDL

Cliquez sur le bouton « Suivant »

Saisissez le nom du fichier .wsdl et cliquez sur le bouton « Suivant »

 

26.4. La mise en oeuvre d'Axis avec le WTP 1.5

 

  Version utilisée dans cette section
Eclipse 3.2.1
WTP 1.5.1
JDK 1.5_07
Axis 1.4
Tomcat 5.0

Cette section va utiliser un projet de type web dynamique nommé TestWsWTP dans lequel la cible de compilation a été modifiée pour pointer sur le répertoire WebContent/WEB-INF/classes créé pour l'occasion.

 

26.4.1. La création du service web

Créez une classe nommée Echo

Exemple :
package com.jmdoudoux.test.axis; 

public   class  Echo { 
  public  String afficher(String message) { 
    return  message; 
  } 
}

Dans la vue « Explorateur de projets », sélectionnez la classe Echo et utilisez l'option « Service web / Créer un service web » du menu contextuel.

Il est possible de préciser le niveau de fonctionnalités pris en compte par l'assistant grâce au curseur de gauche. Cliquez sur le bouton « Suivant ».

La boîte de dialogue suivante permet de préciser les options pour générer le fichier wsdl notamment en précisant son nom, les méthodes de la classe qui seront proposées dans le service web et le type de service web. Cliquez sur le bouton « Suivant »

La page suivante permet de démarrer le serveur : cliquez sur le bouton « Démarrer le serveur ». Le serveur démarre : cliquez sur le bouton « Suivant ».

La page suivante permet de demander l'enregistrement du service dans un annuaire UDDI.

Cliquez sur le bouton « Terminer ».

Ouvrez un navigateur et saisissez l'url http://localhost:8080/TestWsWTP/services

 

26.4.2. Le test du service web avec l'explorateur de services web

Le WTP propose un outil qui permet de tester un service web.

Dans l'explorateur de projets, sélectionner le fichier wsdl correspondant au service web puis utilisez l'option « Service Web / Tester avec un explorateur de services web ».

Cliquez sur le lien « afficher » dans la liste des opérations.

Saisissez test comme valeur du paramètre message de type string et cliquez sur le bouton « OK ».

Cliquez sur le lien source pour voir la requête et la réponse SOAP

 

26.4.3. La création d'un client de test

Dans l'explorateur de packages, sélectionnez la classe qui implémente le service web et utilisez l'option « Services web / Générer des fichiers JSP d'exemples » du menu contextuel.

Cliquez sur le bouton « Terminer » pour générer les fichiers

Les pages JSP de test sont générées dans un répertoire nommé « sample » suivi du nom de la classe

L'assistant lance le navigateur interne pour afficher la page principale générée.

L'url de cette page est http://localhost:8080/TestWsWTP/sampleEcho/TestClient.jsp

Cliquez sur le lien de la méthode afficher() :

Saisissez une valeur pour la propriété message de la méthode et cliquez sur le bouton « Invoke »

La méthode du service web est invoquée et le résultat est affiché dans le cadre Result.

 

 

 

en construction
Cette section sera développée dans une version future de ce document

 

 


  25.  EJB et Eclipse 27. JPA et Eclipse Imprimer Sommaire Consulter avec table des matières Développons en Java avec Eclipse   v 0.80  
Copyright (C) 2003-2007 Jean-Michel DOUDOUX