Exercices TP3 Creation Service Web SOAP avec JAX-WS et SOAPUI Netbeans Web Services
Télécharger PDFCe document détaille des travaux pratiques (TP) sur la création et la consommation de services web SOAP.
Objectifs du TP
Dans ce TP, vous vous initierez à la création d'un service web SOAP. Pour ce faire, le TP est structuré en plusieurs étapes :
- Récupération et test d'un WSDL de service web existant à l'aide de SOAPUI.
- Création et déploiement d'un service web SOAP en Java, puis son test avec SOAPUI, en utilisant l'API JAX-WS à partir de la plateforme Java NetBeans.
- Création d'un client pour un service web.
Environnement de travail
- IDE NetBeans
- JDK 7 ou 8
- Serveur GlassFish
Exercice 1 : Inspecter et invoquer un service web existant
Le but de cet exercice est de construire un projet SOAPUI à partir de la description WSDL d'un service web, de l'analyser, puis d'invoquer certaines de ses opérations.
Étapes pour l'inspection et l'invocation
-
Choisir un service web à inspecter et invoquer : Nous prendrons l'exemple du service de la NOAA (National Oceanic and Atmospheric Administration), une agence gouvernementale des États-Unis. Ce site fournit un accès à la base complète des conditions climatiques sur le sol américain. La NOAA fournit, par le biais d'un service web, des opérations permettant d'interroger cette base pour connaître, par exemple, le temps dans une région donnée.
-
Vérifier que le document WSDL du service web de la NOAA est disponible : Pour ce faire, ouvrez votre navigateur préféré et tentez d'accéder à l'URL de description WSDL du service. Si le document s'affiche, le WSDL est disponible.
-
Examiner le document WSDL : Identifiez clairement les opérations disponibles dans le document WSDL.
-
Télécharger et installer SOAPUI : SOAPUI est un outil développé en Java qui permet de tester les fonctions (opérations) offertes par un service web et de visualiser les messages SOAP envoyés. Installez l'outil puis démarrez-le.
-
Construire un nouveau projet SOAPUI :
- Via le menu
File → New soapUI Project. - Dans le champ
Project Name, saisissez le nom du projet « test-NOAA », puis validez. - Dans le champ
Initial WSDL/WADL, saisissez l'adresse de la description WSDL du service web de la NOAA.
- Via le menu
-
Invoquer l'opération
LatLonListZipCode:- Double-cliquez sur le nœud
Request1de l'opérationLatLonListZipCode. Cette opération retourne des couples de valeurs Latitude/Longitude en fonction d'une liste de codes postaux américains. - Dans le corps de l'élément
zipCodeList, saisissez la valeur10001(code postal de New York) puis soumettez le message SOAP. - Vérifiez le résultat de la réponse ; les valeurs Latitude/Longitude doivent être 40.7198/-73.993.
- Double-cliquez sur le nœud
-
Invoquer l'opération
NDFDgenByDay: Cette opération retourne des prévisions météorologiques en fonction de la latitude, de la longitude, d'une date de début, d'une durée et d'un format d'unité. Utilisez les valeurs suivantes :latitude= 40.7198longitude= -73.993startDate= YYYY-MM-DD (où YYYY est l'année, MM le mois et DD le jour. Il faut choisir une date postérieure à la date du jour)numDays= 1unit= m (mètre)format= 24 hourly (format horaire sur 24 heures)
Exercice 2 : Création d’un service web SOAP en Java
Étapes de création et de test du service web
-
Créer un nouveau projet : Sélectionnez
Java web → Web Application, nommez-le « TP-CalculWS » et choisissez le serveur GlassFish. -
Créer un nouveau web service : Nommez-le « CalculWS » dans un package tel que « org.dz.calcul ». Les packages
javax.jws.*serviront aux annotations des classes, méthodes et paramètres. Ces annotations sont ajoutées automatiquement. -
Définir une opération : Pour le service que vous venez de créer, définissez une opération permettant de calculer le Delta d’une équation de deuxième degré
Ax² + Bx + C = 0. La méthode nécessitera donc trois paramètres : A, B et C. -
Déploiement du service web : Faites un clic droit sur le projet et choisissez « Deploy ». Dans l’onglet GlassFish du projet, à la fin de l’opération de déploiement, l’adresse internet où le service web est disponible apparaît. Copiez l'URL de ce service web.
-
Tester le service web :
- Option 1 (Navigateur) : Lancez un navigateur internet avec l’URL que vous avez copiée (par exemple, en ajoutant
?testerà la fin pour accéder à l'interface de test générée). Vérifiez si la méthode fonctionne correctement en saisissant les valeurs des trois paramètres de la fonction. - Option 2 (SOAPUI) : Lancez SOAPUI, créez un nouveau projet et collez l’URL de votre service CalculWS. Ensuite, effectuez plusieurs tests pour valider son fonctionnement.
- Option 1 (Navigateur) : Lancez un navigateur internet avec l’URL que vous avez copiée (par exemple, en ajoutant
Exercice 3 : Création d’une application client d’un service web
Développement du client
Le développement du client consiste à appeler des opérations du Service Web à partir d’un programme Java. Ainsi, vous manipulerez uniquement du code Java. Le client peut être une application développée en Java SE (par exemple, avec Swing) ou en Java EE (avec les EJB, JSP, Servlet, etc.). Vous allez développer un client Java comme suit :
-
Créer une application Java Standard : Nommez-la « CalculWS_Client_Application ».
-
Ajouter un client de service web : Afin de générer la couche SOAP de communication, faites un clic droit sur
CalculWS_Client_Application → New → Web Service Client. -
Sélectionner la source WSDL : Sélectionnez le projet
TP-CalculWScomme source WSDL ou saisissez directement l’URL du service web dans la partie WSDL URL. Un ensemble de classes est généré par l’outilwsimport. En effet, à partir du fichier WSDL du service, NetBeans génère de nombreuses classes, qui sont placées dans le répertoireGenerated-Sources. -
Rôle de
wsimport:wsimportest un outil de conversion WSDL vers Java. Il produit des classes et des interfaces Java à partir de la description WSDL, notamment :- Une interface (par exemple,
CalculWS.java) qui correspond à la représentation Java annotée du fichier WSDL pour le service web. - Une classe de service (par exemple,
CalculWS_Service.java) comportant toutes les informations d’accès au service, notamment l'URL d'accès. - Une fabrique
ObjectFactorypour créer les objets Java qui mapperont les messages XML échangés (par exemple, pour les requêtes et réponses de l'opération de calcul du Delta).
Ces classes ne doivent pas être modifiées puisqu’elles sont générées automatiquement.
- Une interface (par exemple,
-
Référence du Service Web : Un pseudo-répertoire « Web Service Références » est ajouté, contenant la référence du Service Web. Les fichiers WSDL et le schéma des types du Service Web sont placés dans le répertoire
META-INF. -
Appeler l'opération du service : Faites un double clic sur votre classe Client et glissez-déposez la méthode correspondant à l'opération de calcul du Delta après la méthode
main. Vous pouvez également faire un clic droit sur l’éditeurInsert Code → Call Web Service. -
Compiler et tester : Placez dans la fonction
mainun appel à la fonction, initialisez les variables, renseignez le bloccatchpour la gestion des exceptions et affichez le résultat dans la console. Compilez et testez votre application.
Foire aux questions (FAQ) sur les Services Web SOAP
Qu'est-ce qu'un service web SOAP ?
Un service web SOAP (Simple Object Access Protocol) est une méthode standardisée de communication entre des applications logicielles hétérogènes sur des réseaux. Il utilise le protocole XML pour échanger des informations et est souvent basé sur le protocole HTTP. Le WSDL (Web Services Description Language) décrit les fonctionnalités offertes par le service.
À quoi sert l'outil SOAPUI ?
SOAPUI est un outil open-source et multiplateforme utilisé pour tester, simuler et surveiller les services web SOAP et REST. Il permet aux développeurs de vérifier les fonctionnalités d'un service, d'analyser ses descriptions WSDL, d'envoyer des requêtes et d'inspecter les réponses.
Quel est le rôle de wsimport dans le développement d'un client SOAP ?
wsimport est un outil Java inclus dans le JDK qui génère des artefacts Java (classes et interfaces) à partir d'un fichier WSDL. Ces artefacts simplifient l'interaction avec un service web SOAP, permettant au développeur d'appeler des opérations de service web comme s'il s'agissait de méthodes Java locales, sans avoir à gérer directement les messages XML SOAP.