TP3 - LSIS

publicité
M2 SIR
2016-2017
TP3 : Création de services Web REST
L’objectif de ce TP est de creer des services web REST avec JAX-RS, les deployer et ecrire les
clients qui appellent ces services.
Vous allez dans un premier temps developper un service REST simple ensuite vous allez creer un
service Web REST permettant de gerer plusieurs listes d’etudiants. Vous manipulerez plusieurs
technologies : JAXB (Java Architecture for XML Binding) et JAX-RS (Java API for RESTful
Services).
I.
Votre Premier Service REST avec JAX-RS
1. Présentation
Jusqu’à présent, vous avez vu la création et le déploiement de services Web basés sur le
protocole SOAP. Mais une autre approche des services Web et qui devient de plus en
plus populaire existe: REST. Le concept introduit en 2000 ne fait qu'utiliser les principes
fondamentaux du Web. Utilisant le protocole HTTP, il permet l'envoi de messages sans
enveloppe SOAP et dans un encodage libre (XML, JSON, binaire, simple texte). Il est
actuellement très utilisé par les sites communautaires (ou réseaux sociaux) leur
permettant de proposer à leurs clients une API facile à utiliser. Des sites comme Flickr,
Facebook, Last.fm, Amazon proposent ainsi de telles API évitant à leurs clients de devoir
passer par la case SOAP.
2. Architecture
L’information de base, dans une architecture REST, est appelee ressource.
On accède à une ressource (par son URI unique) pour procéder à diverses opérations
(GET lecture / POST écriture / PUT modification / DELETE suppression), opérations
supportées nativement par HTTP.
3. Création d’un premier service web REST
Les services REST sont specifies par le JCP (Java Community Process) sous le nom JAXRS1(Java API for RESTful Services). Cette specification precise ce que peut ou doit faire
une implementation, comme pour toutes ces specifications. L'implementation de
reference que l'on utilise est Jersey 2. Jersey est installe en standard dans un serveur JEE
(tel que Glassfish ou JBoss), et peut s'installer dans un serveur Tomcat.
Vous allez creer un premier service web Rest. Pour ce premier service Web, il s’agit
simplement de montrer l’utilisation de celui-ci a partir d’un navigateur Web.
Vous allez suivre les etapes suivantes :
 Créer un nouveau projet : Java Web Web Application que vous nommerez
« WebServiceRest », vous choisirez Glassfish comme serveur.
 Créer un nouveau package que vous nommerez comme vous le souhaitez.
1
2
https://jax-rs-spec.java.net/
https://jersey.java.net/
Page 1
M2 SIR
2016-2017



Créer un service web Rest en cliquant sur NewOtherWebServiceRESTful
WebServices from Pattern. Sélectionner "Simple Root Resource". Dans la fenêtre
suivante, il faut rentrer les informations permettant de configurer le service Web
REST :
o Un nom de package (Resource Package)
o Un chemin d’accès qui permet d’accéder au service Web lorsqu’il est
déployé (Path) et qui est à ajouter à l’URL donnée lors du déploiement de
l’application Web.
o Un nom de class (Class Name)
o Un type MIME pour le format de réponse du service Web. Modifier MIME
Type en sélectionnant « text/plain ».
Netbeans s’est chargé de la gestion des ressources en générant une sous classe de
« javax.ws.rs.core.Application ». Il faut savoir que vous avez également la
possibilité de réaliser vous-même la gestion des ressources en configurant Jersey.
Une nouvelle classe est créée par défaut « GenericResource ». Vous allez supprimer
le code par défaut et le remplacer par le code suivant :
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
@Path("Mypath")
public class GenericResource {



3
}
@GET
@Produces("text/plain")
public String getText() {
return "Mon premier service REST";
}
Il s’agit d’un service REST simple qui invoque la méthode getText qui
retourne une réponse sous format texte "Mon premier service REST“.
L’annotation @Path3 désigne d'une part l'URI d'accès au service et à ses
sous-services, et d'autre part la présence de paramètres dans cette URI.
Cinq annotations sont définies, qui peuvent annoter certaines méthodes
d'un service REST : @GET, @POST, @PUT, @DELETE, et @HEAD. Elles
correspondent aux cinq méthodes HTTP qui portent le même nom. On ne
peut poser chaque annotation qu'une seule fois sur une unique méthode
dans une classe donnée, pour un chemin d'accès donné. La liste des
annotations
est
disponible
à
l’adresse
suivante :
http://docs.oracle.com/javaee/6/tutorial/doc/gilik.html.
https://jersey.java.net/documentation/latest/jaxrs-resources.html
Page 2
M2 SIR
2016-2017
4. Déploiement et vérification de la disponibilité du service Web
Après avoir créée le service Web, l’URL peut être testée sachant que la première
partie de celle-ci permet d’accéder à la web application et que la deuxième permet
d’accéder aux ressources de l’application. La troisième et dernière partie de l’URL donne
le chemin d’accès à la classe où se trouve le web service. C’est dans cette classe que l’on
surcharge les méthodes HTTP.
URL : http://localhost:8080/WebServiceRest/webresources/Mypath








Faire un clean and build de votre projet et faire un deploy.
Faire un clic droit sur le service « GenericResource » et sélectionner « Test
Resource Uri ». Quel résultat obtenez-vous ? Pourquoi ?
Vous allez maintenant faire clic droit sur le projet Test Restful Web
services, ensuite vous sélectionnez « web test client in the project » et
sélectionnez votre projet. Vous allez ouvrir le fichier WADL et décrire son
contenu.
Vous allez modifier le format de réponse du service de telle sorte qu’il
retourne le message sous format XML. Tester votre service.
Vous allez ajouter une nouvelle méthode permettant de calculer le produit de
deux entiers. Le chemin de la ressource doit être ../produit et le type de MIME
sera soit du JSON soit du XML permettant d’afficher un message de type « le
produit de deux entiers est » . Vos arguments seront annotés avec
@QueryParam.
Vous allez ajouter des valeurs par défaut grâce à @DefaultValue et testez.
Utiliser maintenant l’annotation @PathParam.
Tester l’exemple suivant4 et expliquer le résultat obtenu. A quoi servent
@Context et la classe URIInfo.
@GET
@Path("param")
public String getResource(@Context UriInfo uriInfo) {
return "The client used this URI to reach this resource method: " +
uriInfo.getAbsolutePath().toASCIIString();
}
Conseil : Prenez le soin de tester les différentes annotations proposées par JAX-RS.
Plusieurs exemples sont également disponibles sur le net56.
II.
Création d’un service pour la gestion d’une liste d’étudiants
Vous allez creer un service Web REST permettant de gerer plusieurs listes d’etudiants. La
principale difference avec le service Web precedent reside dans le fait que les etats de ce
nouveau Web service sont stockes sur le serveur.
4
5
6
http://www.ibm.com/support/knowledgecenter/fr/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/twbs_jaxrs_contextobjects_uri.html
http://www.javainterviewpoint.com/jax-rs-rest-consumes-example/
https://www.mkyong.com/webservices/jax-rs/jax-rs-queryparam-example/
Page 3
M2 SIR





2016-2017
Vous allez :
Créer une nouvelle application Web qui sera déployée sur le serveur Glassfish que vous
nommerez « WSRestGestionListe ».
Définir une classe Etudiant qui sera munie de deux attributs (nom et prénom) et définir
une classe listEtudiant pour gérer une structure de données de type liste. La classe
listEtudiant va comprendre 5 méthodes : ajoutEtudiantdansListe, modifEtudiant,
ConsultEtudiant, ConsultListEtudiant et supprimEtudiant.
Ajouter la classe du service Web permettant d’implémenter les méthodes HTTP(Restful
Web Services from Patterns). Vous allez définir les méthodes exposées par le service
pour:
o Créer sa propre liste d’étudiants
o Ajouter des étudiants dans cette liste
o Modifier les informations relatives à un étudiant dans cette liste
o Consulter les informations relatives à un étudiant de cette liste
o Obtenir les informations sur tous les étudiants de la liste
o Supprimer un étudiant de cette liste
N’oubliez pas de redéfinir les méthodes HTTP pour chacune des méthodes exposées par
le service Web.
Vérifier que votre application est bien déployée sur le serveur Glassfish.
Utiliser le navigateur Web comme client afin d’interroger le service que vous aurez
créé. Vous pouvez pour cela utiliser POSTER. Par exemple, pour utiliser la création de la
liste d’étudiants vous pouvez saisir l’URL suivante : http://localhost:8080/
WSRestGestionListe/webresources/le_chemin/créerListEtudiant/2
Et valider en appuyant sur le bouton POST.
Page 4
Téléchargement