Académique Documents
Professionnel Documents
Culture Documents
----------------------------------------------
Auditoire : GLSI-3
TP1
Objectif :
- Savoir créer et tester un service web de type REST en Java, en utilisant Jax-rs1
- Savoir manipuler les Réponses d’un service Rest avec les codes d’état.
Outils nécessaires :
Eclipse IDE for Enterprise Java and Web Developers
Lien de téléchargement : Eclipse downloads - Select a mirror | The Eclipse Foundation
WildFly (dans nos TP, nous utilisons la version widldfly 26.1.2Final)
Lien de téléchargement : WildFly Downloads
Postman logiciel de test des web sevices
Lien de téléchargement : Download Postman | Get Started for Free
1. Commencez par configurer l’environnement d’exécution Wildfly sous eclipse comme suit :
Window > Prefrences
1 Jax-rs : acronyme de Java API for Restful web Services. Depuis la version 1.1, JAX-RS fait partie intégrante de la
spécification Java EE 6 au niveau de la pile Service Web. Cette spécification décrit uniquement la mise en œuvre des services
web Rest côté serveur. Le développement des services web REST repose sur l’utilisation de classes Java et des annotations.
p. 1
tp1 – SOA et Services Web
2. Dans l’interface qui s’ouvre cliquez sur : Server > Runtime Environment > Add
3. Dans la liste qui s’affiche, sélectionnez JBoss AS, WildFly & EAP Server Tools sous la
catégorie Red Hat JBoss Middleware puis cliquez sur Next. Dans l’interface suivante acceptez
la licence et terminez l’assistant.
Remarquez l’installation des outils relatifs aux serveurs sélectionnés a démarré en arrière plan. N’arrêtez
pas Eclipse et attendez jusqu’à la fin de l’installation.
p. 2
tp1 – SOA et Services Web
4. A la fin de l’installation, une fenêtre s’affiche demandant votre autorisation pour accepter
l’origine des outils à installer. Cliquez sur Select All puis Trust Selected. Ensuite, cliquez sur
Restart Now.
5. Une fois redémarré, configurer le serveur Wildfly version 26 comme indiqué dans les interfaces
qui suivent :
p. 3
tp1 – SOA et Services Web
6. Dans l’interface qui s’ouvre, sélectionnez le dossier où vous avez décompressé wildfly. Cochez
l’option Alternate JRE et terminez l’assistant.
7. Dans l’interface qui s’affiche, cliquez sur Finish. Remarquez alors qu’une nouvelle configuration
du serveur Wildfly a été ajoutée à la liste des servers d’exécution configurés sous Eclipse comme
indiqué dans la figure suivante. Cliquez alors sur Apply and Close.
p. 4
tp1 – SOA et Services Web
Remarquez aussi qu’une nouvelle instance local du serveur Wildfly a été créée au niveau de l’anglet
Servers.
1. Nous devons commencer par créer un nouveau projet Web dynamique « tp1_ex1 ». Vérifiez que
le serveur Wildfly est bien sélectionné.
2. Ajoutez à ce projet un package « com.istic.rest ». Y-ajoutee une classe nommée
PrintRessource. Cette classe représente notre classe d’implémentation des web services REST
et doit contenir des méthodes publiques.
Notez Que : Une ressource web dans le contexte des services REST est une simple classe Java (on parle
de POJO pour Plain Java Object ) comme Livre, Catégorie, Client …Cette classe doit être annotée par
p. 5
@Path, ou, à défaut, au moins une de ses méthodes doit l'être.
tp1 – SOA et Services Web
Pour exposer notre classe comme un service Rest, nous devons l’enrichir par des annotations de la
bibliothèque jax-rs. Par exemple :
Une application JAX-RS doit contenir au moins une classe ressource packagée dans une archive
WAR. Afin d’activer les ressources REST définies dans votre application, vous devez ajouter une
sous-classe javax.ws.rs.core.Application, puis ajouter les modèles d'URL requis à l'aide de
l'annotation @ApplicationPath. Le chemin défini dans l'annotation javax.ws.rs.ApplicationPath sera
ajouté à l'URL de base.
4. Créez alors une classe RestActivator sous le package « com.istic.rest » contenant le code suivant :
5. Votre service Rest est maintenant prêt, il suffit de le déployer sous Wildfly. Voici deux solutions
pour déployer le projet :
p. 6
tp1 – SOA et Services Web
Solution 1 : clic droit sur le projet tp1_ex1 > Run > Run on Server > Choisir Wildfy > Finish
Solution 2 : clic droit sur le serveur Wildfly > Add and Remove > Selectionner tp1_ex1 >Add > Finish.
Votre application doit être mise à jour constamment sur le serveur Wildfly afin d’être
synchronisée avec vos changements. Pour ce faire, sous le serveur Wildfly, cherchez votre projet
« tp1_ex1 » > Full Publish.
http://localhost:8080/tp1_ex1/RestApi/hello
Résultat de la requête
p. 7
tp1 – SOA et Services Web
1 3
2
4
Méthode http
URL pour accéder au service
Exécution
Résultat de la requête
Maintenant on va changer le comportement de notre service web RESTful pour qu’il utilise des paramètres.
2. Vous pouvez tester cette ressource à partir de l’URL suivante toute en remplaçant la variable
name par une valeur de votre choix. Voici un exemple :
http://localhost:8080/tp1_ex1/RestApi/print/helloYou?name=Mouna
p. 8
tp1 – SOA et Services Web
3. Ajoutez maintenant une autre fonction récupérant le name à partir des données d’un formulaire
en utilisant l’annotation @FormParam
4. Pour tester cette fonction, ajoutez dans Postman une nouvelle requête comme suit :
Exercice :
1. Ajoutez une fonction qui retourne la somme de deux entiers fournis comme
arguments de la requête et en utilisant @FormParam
2. Ajoutez une fonction getJson qui retourne le nom fournit comme argument en
json comme indiqué dans l’exemple suivant : {"nom " : "Mouna"}
p. 9
tp1 – SOA et Services Web
Quelle que soit l’opération demandée, les ressource indiquent toujours un statut de retour. Ce code est
renvoyé au client afin que celui-ci puisse connaître le problème réel et procéder en conséquence. 200,
500 et 404 sont les plus connus, ils indiquent, dans l’ordre, un succès, un échec et l’absence du document
recherché. Nous allons utiliser un générateur Response pour générer une réponse avec le code souhaité.
5. Ajoutons maintenant à cette classe une fonction ayant les caractéristiques suivantes :
p. 10
tp1 – SOA et Services Web
Annexe
Annotation Rôle
@ApplicationPath C’est là où tu commences à définir l’URI de votre
application REST contenant plusieurs ressources
@Path - Sur une classe, définit des ressources racines
- Sur une méthode permet de spécifier le
traitement à réaliser (opération à appeler)
@GET, @POST, @DELETE, @PUT Définit l’action implémentée par le service
@Produces Est utilisée pour spécifier le / les types qu’une
méthode de ressource peut produire
@Consumes Spécifie le type accepté en entré du service
p. 11