Mise en oeuvre de Web Services WS

publicité
Workshop e-Business
ISMIN 3A P2015
TP2 : Web Services
Ce TP suppose que les éléments suivants ont été installés :
netbeans en version 8 (8.0.2)
glassfish en version 4 (4.1)
Les phrases en rouge sont des questions ouvertes, qui pourront constituer des sources d’inspiration pour le
contrôle.
Le dernier exercice du TP précédent consacré aux applications Web, consistait à développer une
application intégrant plusieurs composants Web. Comment assurer l’interopérabilité métier sur une
représentation HTML ? Sauf à réaliser du HTML Crunching, ce n’est pas envisageable, les Web Services sont
une solution.
Avant de développer des applications complexes, nous allons d’abord explorer les Web Services avec un
exemple simple.
 Partie « prestataire »
1. Créez un nouveau projet Java Web / Web Application de nom MathServices. Puis dans le menu File,
choisissez New File puis Web Services et Web Service dont le nom sera MathService. Indiquez un nom
de package et cliquez sur Finish.
2. La classe MathService.java doit s’afficher. Notez d’abord les packages javax.jws.*, qui serviront pour
les annotations des classes, méthodes et paramètres.
o Notez l’annotation de la classe générée avec @WebService. Placez le curseur à l’intérieur de celleci, juste après la parenthèse ouvrante et appuyer sur CTRL SPACE. Notez les choix possibles.
o Notez l’annotation de la méthode générée avec @WebMethod. Placez le curseur à l’intérieur de
celle-ci, juste après la parenthèse ouvrante et appuyer sur CTRL SPACE. Notez les choix possibles.
o Notez l’annotation du paramètre de la méthode générée avec @WebParam. Placez le curseur à
l’intérieur de celle-ci, juste après la parenthèse ouvrante et appuyer sur CTRL SPACE. Notez les
choix possibles.
3. Remplacez la méthode hello par une méthode tirage qui prend une valeur entière max en paramètre
et qui retourne un entier, qui sera un nombre pseudo-aléatoire parmi [0, max [. (Astuce : utilisez le
package java.util.Random).
4. Ajouter aussi une levée d’exception si le nombre en entrée n’est pas dans l’intervalle [1,99]. Conseil :
vous pouvez utiliser une exception existante comme IllegalArgumentException ou en créer une.
5. Nous allons visualiser cette méthode de manière graphique. Pour cela, sauvegardez d’abord votre
classe, puis cliquez sur l’onglet Design en haut de la fenêtre. La fenêtre de la page suivante devrait
apparaître (seule la partie Opérations est montrée ; la partie Quality Of Service sera évoquée plus tard.
TP2 : Web Services
Page 1
© Philippe Lalevée, 2015
Workshop e-Business
ISMIN 3A P2015
6. Cliquez sur les onglets, en particulier sur Faults pour visualiser les éléments de l’opération.
7. Cliquez sur le bouton :
pour afficher un exemple de message qui sera généré. De quel type de
message s’agit-il ? Expliquez son contenu.
8. De même, avec le bouton :
pour un exemple de réponse qui sera générée. Expliquez son contenu.
9. Cliquez sur Add Operation… pour ajouter une nouvelle opération jetDes qui tire un nombre de 1 à 6
(dé à 6 faces) et qui retourne un Integer.
10. Revenez sur l’onglet Source et modifiez la méthode pour qu’elle fasse le travail demandé.
11. Cliquez ensuite à droite sur le projet et choisissez Deploy.
 Test du Web Service
1. Cliquez sur Web Services dans l’arborescence de votre projet pour
obtenir l’équivalent de l’image ci-contre.
2. Cliquez à droite sur MathService et choisissez Test Web Service.
3. Une nouvelle page doit s’afficher dans votre navigateur. Placez une
valeur dans le champ et cliquez sur Tirage. Que constatez-vous ?
4. Placez une valeur invalide (en dehors de l’intervalle indiqué) et lancez
le tirage. Que s’est-il passé et pourquoi ?
5. Notez comment se termine l’URL. Cliquez sur le lien WSDL File :
retrouvez les éléments du schéma affiché et faites le lien avec le code
Java du Web Service.
6. Notez comment se termine maintenant l’URL. Qu’en déduisez-vous ?
Enlevez le « ? » et ce qui suit. Que s’affiche-t-il sur le navigateur ?
7. En consultant la page affichée, retrouvez le schéma des types du Web Services. Y a-t-il une différence
entre le type Java int et Integer ?
 Partie « cliente »
1. Créez un nouveau projet de type Java / Java Application de nom JavaClient. Puis dans le menu File,
choisissez New File puis Web Services et Web Service Client.
2. Dans la fenêtre WSDL and Client Location, sélectionnez Project puis Browse… et sélectionnez le projet
MathServices et le service MathService. (Si vous avez fermé le projet MathServices, ouvrez-le ; s’il est
arrêté, démarrez-le.) Indiquez un nom de package et cliquez sur Finish.
3. Bien que la classe JavaClient n’ait pas été changée, de nombreuses choses se sont passées :
o À partir du fichier WSDL du service, Netbeans a généré de nombreuses classes, qui ont été placées
dans le répertoire Generated Sources.
o Un pseudo-répertoire Web Service Reference a été ajouté, contenant la référence du Web
Service : nous l’utiliserons par la suite.
TP2 : Web Services
Page 2
© Philippe Lalevée, 2015
Workshop e-Business
4.
5.
6.
7.
ISMIN 3A P2015
o Les fichiers WSDL et le schéma des types de Web Service ont été placés dans le répertoire METAINF.
Retrouvez l’arborescence de ces fichiers sur le disque.
Avant d’explorer celle-ci, mettons en place l’appel au Web Service. Pour cela, il suffit de cliquer-glisser
les opérations de la fenêtre Projects dans la classe JavaClient. Netbeans va générer le code nécessaire
à l’invocation.
Il suffit de placer dans la méthode main un appel à ces fonctions et d’afficher le résultat dans la
console. Par exemple System.out.println("tirage = " + tirage(49)). Compilez et testez.
De manière croisée par binôme, ajouter le Web Service de votre collègue en utilisant, en répétant
l’étape 2, le champ WSDL URL. Répétez ensuite les actions 5 et 6. Testez.
 Les classes générées
1. Reprenez les méthodes générées dans la classe JavaClient. 3 lignes ont été générées :
o Création d’un objet de type MathService_service
o Récupération d’un port du Web Service à partir de cet objet avec la méthode getMathServicePort
o Appel de l’opération sur ce port
2. Explorez le source à partir des classes MathService_service et MathService.
o Constituez l’arbre d’appel
o Retrouvez le lien entre les éléments du WSDL et les classes générées
o À quoi servent les classes Tirage et TirageResponse ?
o À quoi sert la classe ObjectFactory ?
o Représenter graphiquement avec UML les relations entre les classes :
 Écrire un diagramme de classes
 Écrire un diagramme de séquences en faisant apparaître les appels de méthode importants
Voici quelques idées d’exploration de Web Services, appelés WSDL Web Service, SOAP Web Service, Big
Web Service (à utiliser dans vos recherches Google).
1. Microsoft TerraService. Voir http://msrmaps.com/webservices.aspx. Consulter le site et faites des
recherches de cartes.
2. XMethods. Voir http://xmethods.net. Consultez le site, retrouvez le service d’information régionale (au
sens américain, cela signifie des informations par continent, par pays, par état, etc.). Testez d’autres
services à votre guise.
3. WebserviceX.NET. Voir http://webservicex.net. Consultez le site et générez des « barcodes ». Testez
d’autres services à votre guise.
4. Consultez aussi http://www.webservicelist.com et tout simplement Google avec une recherche de sites
identiques…
5. Essayez de combiner ces services par binômes.
TP2 : Web Services
Page 3
© Philippe Lalevée, 2015
Workshop e-Business
ISMIN 3A P2015
Après avoir exploré certains services, nous allons d’abord maintenant
mettre en œuvre un exemple complet.
 Application Web
1. En reprenant le service de tirage de l’exercice précédent de votre
binôme, tirer au sort une séquence de 4 couleurs parmi 8 (en
associant les couleurs avec des chiffres de 0 à 7, par exemple, 0 :
noir, 1 : bleu, 2 : rouge…)
2. Développez un service de calcul du nombre de fiches blanches
(nombre de couleurs correctes mais mal placées) et le nombre de
Source Wikimedia.org
fiches noires (nombre de couleurs correctes et bien placées).
3. Développez enfin une application Web qui affiche un plateau similaire à la figure ci-dessus et qui
oppose un joueur au serveur.
 Application « en réseau »
4. Généralisez le principe précédent en distribuant les services sur plusieurs serveurs.
En fin du premier TP, vous avez développé en binôme, une application Web multiserveurs. Vous avez
constaté que le flux HTTP (HTML) n’est pas très indiqué pour transporter des données métiers. Il est
proposé ici de modifier les composants Web, de telle manière qu’ils soient accédés par des Web Services
en conservant les accès Web précédents.
Cahier des charges simplifié : l’application doit pouvoir permettre de :
Afficher/rechercher des clients
Afficher/rechercher des produits
Vérifier l’état du stock d’un produit
Effectuer des commandes
Les bases de données correspondantes doivent être gérées par des serveurs différents.
TP2 : Web Services
Page 4
© Philippe Lalevée, 2015
Téléchargement