SlideShare une entreprise Scribd logo
TP 1: Services Web JAX-WS
et JAX-RS avec IntelliJ-IDEA
Cours eServices - GL5
GL5 - 2015-2016


TP 1 ESERVICES MME. LILIA SFAXI 1
Objectifs du TP
Utiliser IntelliJ-IDEA pour la création de services web SOAP et REST, ainsi que leurs
clients.
I. Environnement de développement
IntelliJ-IDEA est un environnement de développement intégré (IDE) en Java. Il est1
développé par l’entreprise JetBrains, et disponible en édition communautaire avec une
licence Apache 2, ainsi qu’une édition commerciale propriétaire.
La version utilisée dans ce TP est la version "Ultimate Edition 14.1.*"
On aura également besoin du serveur d’application Tomcat (version 7 ou plus) pour le
déploiement des services web, et d’un client SOAP-UI pour les tests des services web.
II. Les Services Web avec JAX-WS
1. JAX-WS
JAX-WS (Java API for XML - Web Services) est une API permettant de développer des2
services web étendus en utilisant le protocole SOAP et le langage WSDL via la
plateforme de développement JAVA.
Le développement de Services Web avec JAX-WS est basé sur des POJO (Plain Old
Java Object). Les fonctionnalités de base pour le développement de Web Services avec
JAX-WS requièrent simplement l’utilisation d’annotations Java.
IntelliJ-IDEA: https://www.jetbrains.com/idea/1
JAX-WS: http://jax-ws.java.net/2
TP 1 ESERVICES MME. LILIA SFAXI 2
La figure suivante montre l’architecture d’un système utilisant JAX-WS.3
Il existe deux façons pour développer un service web avec JAX-WS :
1. Approche Top-Down (Contract First) : permet, à partir d’un document WSDL, de
générer les squelettes des différentes classes Java, de compléter leur
implémentation, puis de les compiler, déployer et tester.
2. Approche Bottom-Up (Code First) : permet de créer et d’annoter un POJO, de le
compiler, déployer et tester, puis de générer automatiquement le document WSDL.
2. Axis 2
Axis2 est un moteur de web services SOAP/WSDL, successeur de Apache Axis. Il4
existe deux implémentations de ce moteur: Apache Axis2/Java et Apache Axis2/C.
Figure extraite du cours Développer des Services Web Étendus avec Java : JAX-WS, par Mickaël3
BARON.
Axis2: http://axis.apache.org/axis2/java/core/4
TP 1 ESERVICES MME. LILIA SFAXI 3
3. Première Application JAX-WS: HelloWorld
1. Création du service web
Comme indiqué précédemment, deux approches sont possibles pour créer un service
web  : une approche Bottom-Up et une approche Top-Down. L’approche qui nous
intéresse pour ce TP (et celle le plus communément utilisée) est l’approche Bottom-Up
(Code first).
Pour créer un service web en utilisant l’approche Bottom-Up, nous allons suivre les
étapes suivantes :
• Créer un nouveau projet de type Web Services, en choisissant l’implémentation Axis2,
et l’appeler sampleServer.
• Le code généré aura l’allure suivante:
TP 1 ESERVICES MME. LILIA SFAXI 4
• Désigner la classe comme service web, et la méthode sayHelloWorldFrom comme
WebMethod. Pour cela, ajouter à la main, ou en utilisant le quick-fix (l’ampoule jaune
), les annotations nécessaires.
• Le code obtenu sera comme suit:
• Configurer ensuite le serveur Tomcat (que vous aurez préalablement installé dans
l’emplacement de votre choix). Pour cela, aller dans les préférences de l’IDE (File ->
Settings) puis naviguer vers Build, Execution, Deployment -> Application Servers.
Ajouter votre serveur Tomcat dans la liste des serveurs (si ce n’est déjà fait) en le
configurant correctement.
• Configurer ensuite votre environnement d’exécution de manière à ce que Tomcat soit
démarré et le service déployé. Pour cela, aller vers Run -> Edit Configurations… et:
- Sélectionner le serveur d’application Tomcat que vous venez de configurer, en
cliquant sur + (en haut de la fenêtre) et en sélectionnant dans la liste
Tomcat Server -> Local
- Appeler votre configuration Tomcat, par exemple. Décocher la case After launch
pour éviter qu’une nouvelle fenêtre de navigateur s’affiche à chaque exécution
- Sous l’onglet Deployment, ajouter un nouvel artifact à déployer (dans notre cas, un
fichier war). Pour cela, cliquer sur le + en bas de la fenêtre, et choisir Artifact… Un
nouvel artifact sampleServer:war exploded va s’ajouter à la liste de déploiement.
- Modifier les informations concernant cet artifact en cliquant sur le stylo
- La fenêtre suivante s’affiche:
TP 1 ESERVICES MME. LILIA SFAXI 5
- Un message d’erreur apparait en bas de la fenêtre, indiquant que la bibliothèque
AX-WS-Apache-Axis n’est pas installée. Cliquer sur Fix… puis Add JAX-WS-Apache-
Axis to the artifact. Cliquer ensuite sur OK.
- Revenir vers l’onglet Server. Modifier l’action on Update pour qu’elle re-déploie le
service à chaque lancement, au lieu de redémarrer le serveur.
• Cliquer ensuite sur Run (le bouton en haut à droite de votre fenêtre). Bien
vérifier, sur la console de votre IDE, que l’artifact est bien déployé, et que le serveur a
démarré. Ces messages doivent donc y figurer (entre autres):
• Vérifier que le service web est bien déployé en ouvrant dans votre navigateur préféré:
http://localhost:8080/services
• Générer le fichier WSDL à partir de ce service web. Pour cela, aller à Tools -> Web
Services -> Generate WSDL from Java Code.
2. Création du client Java
Nous allons maintenant créer un client Java qui va consommer le web service que nous
avons créé.
• Créer un nouveau projet de type Web Services Client en générant un code client
Axis2, et l’appeler sampleClient.
TP 1 ESERVICES MME. LILIA SFAXI 6
• Sous le répertoire src de votre projet, créer un package intitulé client.
• Faites un clic droit sur le répertoire client, et aller vers New -> Web Service Client.
• Appeler votre client HWClient. Vous devez également indiquer quel service vous
désirez consommer en donnant son WSDL. Là, vous avez le choix:
- Soit vous donnez l’URL du WSDL que vous venez de déployer, dans notre cas :
http://localhost:8080/services/HelloWorld?wsdl
- Soit vous naviguez vers le fichier WSDL que vous avez généré à partir du projet
précédent.
• Vous remarquerez que plusieurs classes ont été créées pour permettre l’utilisation de
votre service web. Corriger la classe WSClient en remplaçant:
- RemoteHost par HelloWorld_PortType
- get() par getHelloWorld()
- businessMethod() par sayHelloWorldFrom(“GL5")
• Afficher le résultat de la méthode sayHelloWorldFrom sur la sortie standard (console).
• Exécuter la classe. Le résultat obtenu sera comme suit:
3. Test du service web avec le client SoapUI
Le serveur d’application qui héberge le service peut parfois être inaccessible à
l’utilisateur. On dispose donc d’autres outils pour tester notre service web. On cite par
exemple l’outil soapUI qui est une solution de test open source et multi-plateforme,
permettant de créer rapidement et facilement des tests fonctionnels, grâce à une
interface graphique intuitive.
• Installer l’outil soapui (il est inutile d’installer Hermer JMS).
• Pour tester votre service, créer un nouveau projet intitulé HelloWorldTest et donner
l’URL du fichier WSDL du service HelloWorldService (ou bien le chemin du fichier
WSDL généré). Cliquer ensuite sur OK.
TP 1 ESERVICES MME. LILIA SFAXI 7
• Double-cliquer sur Request1. La fenêtre suivante va s’ouvrir.
• Le premier cadre représente la requête soap, et le second représente la réponse. Pour
tester le service, taper GL5 à la place du « ? » dans la balise <arg0> ?</arg0>
• Cliquer sur la flèche et observer le résultat.
IV. Les Services Restful avec JAX-RS
1. Présentation de REST
REST (Representational State Transfer) est un style d’architecture basé sur les
standards Web et le protocole http. Il a été présenté en premier lieu par Roy Fielding en
2000.
Dans une architecture basée sur REST :
• Tout est Ressource. Une ressource est accédée via une interface basée sur les
méthodes http standard.
• Il existe un serveur REST qui fournit l’accès aux ressources, et un client REST qui
accède et modifie les ressources REST.
• Chaque ressource doit supporter les opérations HTTP communes. Elle est identifiée
par un ID global (typiquement un URI)
• Les ressources peuvent avoir des représentations différentes (texte, xml, json…). Le
client REST peut exiger des représentations spécifiques via le protocole HTTP
(négociation de contenu).
Les Méthodes http
Les méthodes PUT, GET, POST et DELETE sont utilisées dans les architectures à base de
REST.
• GET définit un accès en lecture de la ressource. Il ne change jamais la ressource
• PUT crée une nouvelle ressource
• DELETE supprime une ressource
• POST met à jour une ressource existante et peut en créer des nouvelles
Les services web RESTful
Les services web RESTful sont basés sur les méthodes http et le concept de REST, Ils
définissent un URI de base pour les services, les types MIME (XML, Text, JSON, …) et
l’ensemble des opérations supportées (POST, GET, PUT et DELETE).
2. Présentation de JAX-RS
Java définit un support pour le standard REST via JAX-RS (Java API for RESTful Web
Services). Il utilise des annotations pour simplifier le développement de services web
REST. Ces annotations permettent de définir les ressources et les actions pouvant y être
appliquées. Ces annotations prennent effet à l’exécution, pour générer les classes et
artéfacts pour la ressource.
Le tableau ci-dessous représente les annotations les plus utilisées dans JAX-RS :

TP 1 ESERVICES MME. LILIA SFAXI 8
3. Première Application JAX-RS: HelloWorld
1. Création du service web
Pour créer un service web RESTful en utilisant l’IDE IntelliJ:
• Créer un nouveau projet de type RESTful Web Service, sans générer de code serveur
ni de code client. Indiquer que la bibliothèque utilisée sera installée plus tard.

Annotation Description
@PATH Chemin URI indiquant où une classe Java sera hébergée. Par
exemple /helloworld. Il est également possible d’insérer des
variables dans un URI, par exemple, il est possible de
demander le nom de l’utilisateur et le passer à l’application
dans le chemin : /helloworld/{username}
@GET Une méthode Java annotée avec @GET désigne une requête
de type HTTP GET. Le comportement de la ressource est
déterminé par la méthode HTTP à laquelle la ressource
répond.
@POST Désigne une méthode correspondant à la requête HTTP
POST.
@PUT Désigne une méthode correspondant à la requête HTTP PUT.
@DELETE Désigne une méthode correspondant à la requête HTTP
DELETE.
@HEAD Désigne une méthode correspondant à la requête HTTP
HEAD.
@PathParam Désigne un paramètre pouvant être extrait à partir de l’URI,
pour être utilisé par la ressource. Le nom du paramètre entré
correspond au nom de la variable définie dans l’annotation
@PATH
@Consumes Utilisée pour spécifier le type de représentation MIME qu’une
ressource peut consommer, et qui sont envoyées par le
client.
@Produces Utilisée pour spécifier le type de représentation MIME qu’une
ressource peut produire, et envoyer au client.
TP 1 ESERVICES MME. LILIA SFAXI 9
• Faire un clic droit sur le projet, et choisir Add Framework Support… Ajouter le
framework Maven, ainsi que le support Web (en cochant Web Application, et en
s’assurant que Create web.xml est bien coché)
• Dans le fichier pom.xml généré, définir le groupID de votre projet (com.example.jersey
par exemple) et ajouter la dépendance pour la bibliothèque jersey, version 1.18.3, une
API JAX-RS standard et portable, permettant de simplifier le développement de
services web RESTful:
TP 1 ESERVICES MME. LILIA SFAXI 10
• Cliquer sur Enable Auto-Import sur le popup qui s’affiche (figure ci-dessus).
• Dans le répertoire src/main/java, créer un nouveau package portant le nom de votre
groupID.
• Créer dans ce package une ressource HelloWorld.java, comme suit:
• Configurer le serveur Tomcat (si ce n’est déjà fait).
• Créer une nouvelle configuration pour l’exécution, de la même manière que pour JAX-
WS. Dans la fenêtre de configuration de l’artifact, double cliquer sur les deux
bibliothèques se trouvant dans la case Available Elements, pour les ajouter au fichier
war généré.
• Configurer votre fichier web.xml en ajoutant le code suivant: (Attention, la param-value
du paramètre com.sun.jersey.config.property.packages doit être votre nom de
package)
• Exécuter l’application. Une fois le serveur démarré et le service déployé, vous pourrez
voir le résultat en tapant sur votre navigateur:
http://localhost:8080/hello
2. Ajout de paramètres à la requête
Pour ajouter des paramètres à la requête, deux choix sont possibles:
• Utiliser l’annotation @PathParam(<param_name>), ce qui permettra d'ajouter le
paramètre comme élément de l’URL appelée. Le code aura alors l’allure suivante:
TP 1 ESERVICES MME. LILIA SFAXI 11
L’URI de la ressource sera alors de la forme suivante:
http://localhost:8080/hello/nom/GL5
• Utiliser l’annotation @QueryParam(<param_name>), ce qui permettra d’utiliser la
notation des paramètres. Le code aura alors l’allure suivante:
L’URI de la ressource sera alors de la forme suivante:
localhost:8080/hello?nom=GL5
3. Test du service RESTful avec IntelliJ
IntelliJ offre un mécanisme pour tester facilement les services web RESTful.
• Aller à Tools -> Test Restful Web Service
• Une vue REST Client s’affichera en bas de votre écran:
• Si c’est le PathParam qui est utilisé, alors il faut remplacer le contenu de Path par /
hello/nom/GL5, puis cliquer sur la flèche verte .
• Si on a utilisé le QueryParam, alors il faut ajouter un nouveau Request Parameter avec
nom comme nom, et GL5 comme valeur.
4. Création d’un client Java
Il est très facile de consommer un service RESTful en utilisant Java. Il suffit d’utiliser
Jersey.
• Créer un projet de type RESTful Web Service, et de laisser l’IDE télécharger les
bibliothèques nécessaires (notamment Jersey).
• Modifier la version de Jersey vers 1.12. Pour cela, aller vers File -> Project Structure ->
Libraries. Sélectionner la bibliothèque Jersey, puis cliquer sur Change Version.
• Écrire le code suivant dans la classe HelloWorldClient générée.
TP 1 ESERVICES MME. LILIA SFAXI 12
• Ne pas oublier de modifier le chemin utilisé dans la méthode resource selon la
méthode de paramètrage choisie.
• Lancer la classe normalement.
TP 1 ESERVICES MME. LILIA SFAXI 13

Contenu connexe

Tendances

Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
Cynapsys It Hotspot
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
Heithem Abbes
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
ENSET, Université Hassan II Casablanca
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
ENSET, Université Hassan II Casablanca
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
ENSET, Université Hassan II Casablanca
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
ENSET, Université Hassan II Casablanca
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
ENSET, Université Hassan II Casablanca
 
Java RMI
Java RMIJava RMI
Java RMI
Heithem Abbes
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services web
CHOUAIB EL HACHIMI
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
ENSET, Université Hassan II Casablanca
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
ENSET, Université Hassan II Casablanca
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
ENSET, Université Hassan II Casablanca
 
Chp2 - SOA
Chp2 - SOAChp2 - SOA
Chp2 - SOA
Lilia Sfaxi
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
ECAM Brussels Engineering School
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
ENSET, Université Hassan II Casablanca
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
ENSET, Université Hassan II Casablanca
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de Conception
Lilia Sfaxi
 
Les web services
Les web servicesLes web services
Les web services
dihiaselma
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
Heithem Abbes
 

Tendances (20)

Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
Java RMI
Java RMIJava RMI
Java RMI
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services web
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Chp2 - SOA
Chp2 - SOAChp2 - SOA
Chp2 - SOA
 
HTML, CSS et Javascript
HTML, CSS et JavascriptHTML, CSS et Javascript
HTML, CSS et Javascript
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de Conception
 
Les web services
Les web servicesLes web services
Les web services
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 

En vedette

eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
Lilia Sfaxi
 
eServices-Tp5: api management
eServices-Tp5: api managementeServices-Tp5: api management
eServices-Tp5: api management
Lilia Sfaxi
 
eServices-Chp1: Introduction
eServices-Chp1: IntroductioneServices-Chp1: Introduction
eServices-Chp1: Introduction
Lilia Sfaxi
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOA
Lilia Sfaxi
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de Services
Lilia Sfaxi
 
eServices-Tp4: esb++
eServices-Tp4: esb++eServices-Tp4: esb++
eServices-Tp4: esb++
Lilia Sfaxi
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API Management
Lilia Sfaxi
 
eServices-Chp2: SOA
eServices-Chp2: SOAeServices-Chp2: SOA
eServices-Chp2: SOA
Lilia Sfaxi
 
eServices-Tp3: esb
eServices-Tp3: esbeServices-Tp3: esb
eServices-Tp3: esb
Lilia Sfaxi
 
Getting Started with Real-time Analytics
Getting Started with Real-time AnalyticsGetting Started with Real-time Analytics
Getting Started with Real-time Analytics
Amazon Web Services
 
Real Time Analytics: Algorithms and Systems
Real Time Analytics: Algorithms and SystemsReal Time Analytics: Algorithms and Systems
Real Time Analytics: Algorithms and Systems
Arun Kejariwal
 
Big Data Real Time Applications
Big Data Real Time ApplicationsBig Data Real Time Applications
Big Data Real Time Applications
DataWorks Summit
 

En vedette (12)

eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
 
eServices-Tp5: api management
eServices-Tp5: api managementeServices-Tp5: api management
eServices-Tp5: api management
 
eServices-Chp1: Introduction
eServices-Chp1: IntroductioneServices-Chp1: Introduction
eServices-Chp1: Introduction
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOA
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de Services
 
eServices-Tp4: esb++
eServices-Tp4: esb++eServices-Tp4: esb++
eServices-Tp4: esb++
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API Management
 
eServices-Chp2: SOA
eServices-Chp2: SOAeServices-Chp2: SOA
eServices-Chp2: SOA
 
eServices-Tp3: esb
eServices-Tp3: esbeServices-Tp3: esb
eServices-Tp3: esb
 
Getting Started with Real-time Analytics
Getting Started with Real-time AnalyticsGetting Started with Real-time Analytics
Getting Started with Real-time Analytics
 
Real Time Analytics: Algorithms and Systems
Real Time Analytics: Algorithms and SystemsReal Time Analytics: Algorithms and Systems
Real Time Analytics: Algorithms and Systems
 
Big Data Real Time Applications
Big Data Real Time ApplicationsBig Data Real Time Applications
Big Data Real Time Applications
 

Similaire à eServices-Tp1: Web Services

WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
HINDGUENDOUZ
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
aliagadir
 
2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services
Camus LANMADOUCELO
 
Tp soa avec talend esb
Tp soa avec talend esbTp soa avec talend esb
Tp soa avec talend esb
Alahyane Ahmed
 
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdfwebservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
KHALIDBENABBES1
 
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdfsqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
KHALIDBENABBES1
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)
Tugdual Grall
 
Création de Services et Configuration du ESB avec TalendESB
Création de Services et Configuration du ESB avec TalendESBCréation de Services et Configuration du ESB avec TalendESB
Création de Services et Configuration du ESB avec TalendESB
Lilia Sfaxi
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Frédéric Harper
 
comment realiser un Service Web
comment realiser un Service Web comment realiser un Service Web
comment realiser un Service Web
Nazih Heni
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Marouan OMEZZINE
 
Ter Web Service Intro
Ter Web Service IntroTer Web Service Intro
Ter Web Service Intro
Riadh Tebourbi (Ai1990)
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
Rachida19
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
Winslo Nwan
 
OpenESB et BPEL
OpenESB et BPELOpenESB et BPEL
OpenESB et BPEL
Lilia Sfaxi
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
Sabri Bouchlema
 
Tutoriel web service
Tutoriel  web serviceTutoriel  web service
Tutoriel web service
Abdelouahed Abdou
 

Similaire à eServices-Tp1: Web Services (20)

Axis2 services fr
Axis2 services frAxis2 services fr
Axis2 services fr
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
.NET DotNet CF - 3
.NET DotNet CF - 3.NET DotNet CF - 3
.NET DotNet CF - 3
 
2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services
 
Tp soa avec talend esb
Tp soa avec talend esbTp soa avec talend esb
Tp soa avec talend esb
 
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdfwebservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
webservicesfhjtrddktkddflfddddddyuldydulyulfyul_RESTU.pdf
 
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdfsqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
sqcq<svdsdvezsfvkjezbkjfb ckjhs;dvbqcjkhbazvuyaz.pdf
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)
 
Création de Services et Configuration du ESB avec TalendESB
Création de Services et Configuration du ESB avec TalendESBCréation de Services et Configuration du ESB avec TalendESB
Création de Services et Configuration du ESB avec TalendESB
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
 
comment realiser un Service Web
comment realiser un Service Web comment realiser un Service Web
comment realiser un Service Web
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
 
Ter Web Service Intro
Ter Web Service IntroTer Web Service Intro
Ter Web Service Intro
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
 
Webserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas docWebserver tomcat-jboss-jrun-jonas doc
Webserver tomcat-jboss-jrun-jonas doc
 
OpenESB et BPEL
OpenESB et BPELOpenESB et BPEL
OpenESB et BPEL
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
Tutoriel web service
Tutoriel  web serviceTutoriel  web service
Tutoriel web service
 
Soap
SoapSoap
Soap
 

Plus de Lilia Sfaxi

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
Lilia Sfaxi
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
Lilia Sfaxi
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
Lilia Sfaxi
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
Lilia Sfaxi
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
Lilia Sfaxi
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
Lilia Sfaxi
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
Lilia Sfaxi
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
Lilia Sfaxi
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
Lilia Sfaxi
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
Lilia Sfaxi
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
Lilia Sfaxi
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
Lilia Sfaxi
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
Lilia Sfaxi
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
Lilia Sfaxi
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
Lilia Sfaxi
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
Lilia Sfaxi
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
Lilia Sfaxi
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
Lilia Sfaxi
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
Lilia Sfaxi
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
Lilia Sfaxi
 

Plus de Lilia Sfaxi (20)

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 

eServices-Tp1: Web Services

  • 1. TP 1: Services Web JAX-WS et JAX-RS avec IntelliJ-IDEA Cours eServices - GL5 GL5 - 2015-2016 
 TP 1 ESERVICES MME. LILIA SFAXI 1 Objectifs du TP Utiliser IntelliJ-IDEA pour la création de services web SOAP et REST, ainsi que leurs clients.
  • 2. I. Environnement de développement IntelliJ-IDEA est un environnement de développement intégré (IDE) en Java. Il est1 développé par l’entreprise JetBrains, et disponible en édition communautaire avec une licence Apache 2, ainsi qu’une édition commerciale propriétaire. La version utilisée dans ce TP est la version "Ultimate Edition 14.1.*" On aura également besoin du serveur d’application Tomcat (version 7 ou plus) pour le déploiement des services web, et d’un client SOAP-UI pour les tests des services web. II. Les Services Web avec JAX-WS 1. JAX-WS JAX-WS (Java API for XML - Web Services) est une API permettant de développer des2 services web étendus en utilisant le protocole SOAP et le langage WSDL via la plateforme de développement JAVA. Le développement de Services Web avec JAX-WS est basé sur des POJO (Plain Old Java Object). Les fonctionnalités de base pour le développement de Web Services avec JAX-WS requièrent simplement l’utilisation d’annotations Java. IntelliJ-IDEA: https://www.jetbrains.com/idea/1 JAX-WS: http://jax-ws.java.net/2 TP 1 ESERVICES MME. LILIA SFAXI 2
  • 3. La figure suivante montre l’architecture d’un système utilisant JAX-WS.3 Il existe deux façons pour développer un service web avec JAX-WS : 1. Approche Top-Down (Contract First) : permet, à partir d’un document WSDL, de générer les squelettes des différentes classes Java, de compléter leur implémentation, puis de les compiler, déployer et tester. 2. Approche Bottom-Up (Code First) : permet de créer et d’annoter un POJO, de le compiler, déployer et tester, puis de générer automatiquement le document WSDL. 2. Axis 2 Axis2 est un moteur de web services SOAP/WSDL, successeur de Apache Axis. Il4 existe deux implémentations de ce moteur: Apache Axis2/Java et Apache Axis2/C. Figure extraite du cours Développer des Services Web Étendus avec Java : JAX-WS, par Mickaël3 BARON. Axis2: http://axis.apache.org/axis2/java/core/4 TP 1 ESERVICES MME. LILIA SFAXI 3
  • 4. 3. Première Application JAX-WS: HelloWorld 1. Création du service web Comme indiqué précédemment, deux approches sont possibles pour créer un service web  : une approche Bottom-Up et une approche Top-Down. L’approche qui nous intéresse pour ce TP (et celle le plus communément utilisée) est l’approche Bottom-Up (Code first). Pour créer un service web en utilisant l’approche Bottom-Up, nous allons suivre les étapes suivantes : • Créer un nouveau projet de type Web Services, en choisissant l’implémentation Axis2, et l’appeler sampleServer. • Le code généré aura l’allure suivante: TP 1 ESERVICES MME. LILIA SFAXI 4
  • 5. • Désigner la classe comme service web, et la méthode sayHelloWorldFrom comme WebMethod. Pour cela, ajouter à la main, ou en utilisant le quick-fix (l’ampoule jaune ), les annotations nécessaires. • Le code obtenu sera comme suit: • Configurer ensuite le serveur Tomcat (que vous aurez préalablement installé dans l’emplacement de votre choix). Pour cela, aller dans les préférences de l’IDE (File -> Settings) puis naviguer vers Build, Execution, Deployment -> Application Servers. Ajouter votre serveur Tomcat dans la liste des serveurs (si ce n’est déjà fait) en le configurant correctement. • Configurer ensuite votre environnement d’exécution de manière à ce que Tomcat soit démarré et le service déployé. Pour cela, aller vers Run -> Edit Configurations… et: - Sélectionner le serveur d’application Tomcat que vous venez de configurer, en cliquant sur + (en haut de la fenêtre) et en sélectionnant dans la liste Tomcat Server -> Local - Appeler votre configuration Tomcat, par exemple. Décocher la case After launch pour éviter qu’une nouvelle fenêtre de navigateur s’affiche à chaque exécution - Sous l’onglet Deployment, ajouter un nouvel artifact à déployer (dans notre cas, un fichier war). Pour cela, cliquer sur le + en bas de la fenêtre, et choisir Artifact… Un nouvel artifact sampleServer:war exploded va s’ajouter à la liste de déploiement. - Modifier les informations concernant cet artifact en cliquant sur le stylo - La fenêtre suivante s’affiche: TP 1 ESERVICES MME. LILIA SFAXI 5
  • 6. - Un message d’erreur apparait en bas de la fenêtre, indiquant que la bibliothèque AX-WS-Apache-Axis n’est pas installée. Cliquer sur Fix… puis Add JAX-WS-Apache- Axis to the artifact. Cliquer ensuite sur OK. - Revenir vers l’onglet Server. Modifier l’action on Update pour qu’elle re-déploie le service à chaque lancement, au lieu de redémarrer le serveur. • Cliquer ensuite sur Run (le bouton en haut à droite de votre fenêtre). Bien vérifier, sur la console de votre IDE, que l’artifact est bien déployé, et que le serveur a démarré. Ces messages doivent donc y figurer (entre autres): • Vérifier que le service web est bien déployé en ouvrant dans votre navigateur préféré: http://localhost:8080/services • Générer le fichier WSDL à partir de ce service web. Pour cela, aller à Tools -> Web Services -> Generate WSDL from Java Code. 2. Création du client Java Nous allons maintenant créer un client Java qui va consommer le web service que nous avons créé. • Créer un nouveau projet de type Web Services Client en générant un code client Axis2, et l’appeler sampleClient. TP 1 ESERVICES MME. LILIA SFAXI 6
  • 7. • Sous le répertoire src de votre projet, créer un package intitulé client. • Faites un clic droit sur le répertoire client, et aller vers New -> Web Service Client. • Appeler votre client HWClient. Vous devez également indiquer quel service vous désirez consommer en donnant son WSDL. Là, vous avez le choix: - Soit vous donnez l’URL du WSDL que vous venez de déployer, dans notre cas : http://localhost:8080/services/HelloWorld?wsdl - Soit vous naviguez vers le fichier WSDL que vous avez généré à partir du projet précédent. • Vous remarquerez que plusieurs classes ont été créées pour permettre l’utilisation de votre service web. Corriger la classe WSClient en remplaçant: - RemoteHost par HelloWorld_PortType - get() par getHelloWorld() - businessMethod() par sayHelloWorldFrom(“GL5") • Afficher le résultat de la méthode sayHelloWorldFrom sur la sortie standard (console). • Exécuter la classe. Le résultat obtenu sera comme suit: 3. Test du service web avec le client SoapUI Le serveur d’application qui héberge le service peut parfois être inaccessible à l’utilisateur. On dispose donc d’autres outils pour tester notre service web. On cite par exemple l’outil soapUI qui est une solution de test open source et multi-plateforme, permettant de créer rapidement et facilement des tests fonctionnels, grâce à une interface graphique intuitive. • Installer l’outil soapui (il est inutile d’installer Hermer JMS). • Pour tester votre service, créer un nouveau projet intitulé HelloWorldTest et donner l’URL du fichier WSDL du service HelloWorldService (ou bien le chemin du fichier WSDL généré). Cliquer ensuite sur OK. TP 1 ESERVICES MME. LILIA SFAXI 7
  • 8. • Double-cliquer sur Request1. La fenêtre suivante va s’ouvrir. • Le premier cadre représente la requête soap, et le second représente la réponse. Pour tester le service, taper GL5 à la place du « ? » dans la balise <arg0> ?</arg0> • Cliquer sur la flèche et observer le résultat. IV. Les Services Restful avec JAX-RS 1. Présentation de REST REST (Representational State Transfer) est un style d’architecture basé sur les standards Web et le protocole http. Il a été présenté en premier lieu par Roy Fielding en 2000. Dans une architecture basée sur REST : • Tout est Ressource. Une ressource est accédée via une interface basée sur les méthodes http standard. • Il existe un serveur REST qui fournit l’accès aux ressources, et un client REST qui accède et modifie les ressources REST. • Chaque ressource doit supporter les opérations HTTP communes. Elle est identifiée par un ID global (typiquement un URI) • Les ressources peuvent avoir des représentations différentes (texte, xml, json…). Le client REST peut exiger des représentations spécifiques via le protocole HTTP (négociation de contenu). Les Méthodes http Les méthodes PUT, GET, POST et DELETE sont utilisées dans les architectures à base de REST. • GET définit un accès en lecture de la ressource. Il ne change jamais la ressource • PUT crée une nouvelle ressource • DELETE supprime une ressource • POST met à jour une ressource existante et peut en créer des nouvelles Les services web RESTful Les services web RESTful sont basés sur les méthodes http et le concept de REST, Ils définissent un URI de base pour les services, les types MIME (XML, Text, JSON, …) et l’ensemble des opérations supportées (POST, GET, PUT et DELETE). 2. Présentation de JAX-RS Java définit un support pour le standard REST via JAX-RS (Java API for RESTful Web Services). Il utilise des annotations pour simplifier le développement de services web REST. Ces annotations permettent de définir les ressources et les actions pouvant y être appliquées. Ces annotations prennent effet à l’exécution, pour générer les classes et artéfacts pour la ressource. Le tableau ci-dessous représente les annotations les plus utilisées dans JAX-RS :
 TP 1 ESERVICES MME. LILIA SFAXI 8
  • 9. 3. Première Application JAX-RS: HelloWorld 1. Création du service web Pour créer un service web RESTful en utilisant l’IDE IntelliJ: • Créer un nouveau projet de type RESTful Web Service, sans générer de code serveur ni de code client. Indiquer que la bibliothèque utilisée sera installée plus tard.
 Annotation Description @PATH Chemin URI indiquant où une classe Java sera hébergée. Par exemple /helloworld. Il est également possible d’insérer des variables dans un URI, par exemple, il est possible de demander le nom de l’utilisateur et le passer à l’application dans le chemin : /helloworld/{username} @GET Une méthode Java annotée avec @GET désigne une requête de type HTTP GET. Le comportement de la ressource est déterminé par la méthode HTTP à laquelle la ressource répond. @POST Désigne une méthode correspondant à la requête HTTP POST. @PUT Désigne une méthode correspondant à la requête HTTP PUT. @DELETE Désigne une méthode correspondant à la requête HTTP DELETE. @HEAD Désigne une méthode correspondant à la requête HTTP HEAD. @PathParam Désigne un paramètre pouvant être extrait à partir de l’URI, pour être utilisé par la ressource. Le nom du paramètre entré correspond au nom de la variable définie dans l’annotation @PATH @Consumes Utilisée pour spécifier le type de représentation MIME qu’une ressource peut consommer, et qui sont envoyées par le client. @Produces Utilisée pour spécifier le type de représentation MIME qu’une ressource peut produire, et envoyer au client. TP 1 ESERVICES MME. LILIA SFAXI 9
  • 10. • Faire un clic droit sur le projet, et choisir Add Framework Support… Ajouter le framework Maven, ainsi que le support Web (en cochant Web Application, et en s’assurant que Create web.xml est bien coché) • Dans le fichier pom.xml généré, définir le groupID de votre projet (com.example.jersey par exemple) et ajouter la dépendance pour la bibliothèque jersey, version 1.18.3, une API JAX-RS standard et portable, permettant de simplifier le développement de services web RESTful: TP 1 ESERVICES MME. LILIA SFAXI 10
  • 11. • Cliquer sur Enable Auto-Import sur le popup qui s’affiche (figure ci-dessus). • Dans le répertoire src/main/java, créer un nouveau package portant le nom de votre groupID. • Créer dans ce package une ressource HelloWorld.java, comme suit: • Configurer le serveur Tomcat (si ce n’est déjà fait). • Créer une nouvelle configuration pour l’exécution, de la même manière que pour JAX- WS. Dans la fenêtre de configuration de l’artifact, double cliquer sur les deux bibliothèques se trouvant dans la case Available Elements, pour les ajouter au fichier war généré. • Configurer votre fichier web.xml en ajoutant le code suivant: (Attention, la param-value du paramètre com.sun.jersey.config.property.packages doit être votre nom de package) • Exécuter l’application. Une fois le serveur démarré et le service déployé, vous pourrez voir le résultat en tapant sur votre navigateur: http://localhost:8080/hello 2. Ajout de paramètres à la requête Pour ajouter des paramètres à la requête, deux choix sont possibles: • Utiliser l’annotation @PathParam(<param_name>), ce qui permettra d'ajouter le paramètre comme élément de l’URL appelée. Le code aura alors l’allure suivante: TP 1 ESERVICES MME. LILIA SFAXI 11
  • 12. L’URI de la ressource sera alors de la forme suivante: http://localhost:8080/hello/nom/GL5 • Utiliser l’annotation @QueryParam(<param_name>), ce qui permettra d’utiliser la notation des paramètres. Le code aura alors l’allure suivante: L’URI de la ressource sera alors de la forme suivante: localhost:8080/hello?nom=GL5 3. Test du service RESTful avec IntelliJ IntelliJ offre un mécanisme pour tester facilement les services web RESTful. • Aller à Tools -> Test Restful Web Service • Une vue REST Client s’affichera en bas de votre écran: • Si c’est le PathParam qui est utilisé, alors il faut remplacer le contenu de Path par / hello/nom/GL5, puis cliquer sur la flèche verte . • Si on a utilisé le QueryParam, alors il faut ajouter un nouveau Request Parameter avec nom comme nom, et GL5 comme valeur. 4. Création d’un client Java Il est très facile de consommer un service RESTful en utilisant Java. Il suffit d’utiliser Jersey. • Créer un projet de type RESTful Web Service, et de laisser l’IDE télécharger les bibliothèques nécessaires (notamment Jersey). • Modifier la version de Jersey vers 1.12. Pour cela, aller vers File -> Project Structure -> Libraries. Sélectionner la bibliothèque Jersey, puis cliquer sur Change Version. • Écrire le code suivant dans la classe HelloWorldClient générée. TP 1 ESERVICES MME. LILIA SFAXI 12
  • 13. • Ne pas oublier de modifier le chemin utilisé dans la méthode resource selon la méthode de paramètrage choisie. • Lancer la classe normalement. TP 1 ESERVICES MME. LILIA SFAXI 13