Vous êtes sur la page 1sur 14
Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

REST avec JAX-RS et Netbeans : Leçon 3 Par Mickael BARON Date de publication : 7

Date de publication : 7 septembre 2011

Dernière mise à jour : 15 janvier 2013

Le but de cette troisième leçon est d'apprendre à manipuler l'API JAX-RS pour le développement de services Web REST à partir de la plateforme de développement Java. La leçon insiste sur les développements serveur et client d'un service Web REST.

Buts pédagogiques : transformation d'une classe Java en service Web REST, manipulation des annotations JAX-RS, génération de fichier WADL, utilisation de SOAP- UI pour invoquer un service Web REST à partir de WADL, utilisation de l'implémentation JERSEY, utilisation de l'API cliente de JERSEY.

Pour réagir au contenu de ce tutoriel, un espace de dialogue vous est proposé sur le forum .

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

Exercice 1 - Développer un Service Web REST : Bonjour ENSMA

3

But

3

Description

3

Étapes à suivre

3

Exercice 2 - Développer un Service Web REST : Interrogation et réservation de train

6

But

6

Description

6

Étapes à suivre

6

Exercice 3 - Développer un client de Service Web REST : Interrogation et réservation de train

11

But

11

Description

11

Étapes à suivre

11

Remerciements

14

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

Exercice 1 - Développer un Service Web REST : Bonjour ENSMA

But

• Développer un service web REST à partir d'une classe Java.

• Déployer sous Glashfish, tester le service web avec CURL.

• Tester le service web avec SOAP-UI.

• Tester le service web avec les outils de Netbeans.

Description

Le service Web de type REST de ce premier exercice consiste à fournir un accès à la ressource Bonjour ENSMA qui permet de donner des messages différents selon la date du jour. Les services proposés n'autorisent que la lecture à la ressource (GET). Ces services de récupération peuvent posséder des paramètres. Enfin, le format de récupération de la ressource est du XML.

Étapes à suivre

Démarrer l'environnement de développement NetBeans.

Créer un nouveau projet File -> New Project

puis Java Web et choisir Web Application, faire Next.

Dans le nom du projet choisir le nom

HelloENSMAWebServiceRestExercice1

.

Comme type de serveur d'application, choisir GlassFish 3 et comme version Java EE choisir la version 7 puis faire Next.

Ne rien choisir dans les options de Frameworks, puis faire Finish. L'initialisation d'un projet Web est en cours.

Créer un service Web REST à partir de l'assistant de création Web Services -> RESTful Web Services from Patterns puis faire Next.

Choisir par la suite, l'option Simple Root Resource puis faire Next. Dans le champ Resource Package définir la

, dans le

champ Class Name saisir la valeur

valeur

soa.jaxrslabs.helloensmawebservicerestexercice1

HelloEnsma

, dans le champ Path saisir la valeur

helloensma

, puis faire Finish.

Par la suite, il est demandé la manière dont les ressources sont gérées par l'application, choisir la troisième proposition (Create default REST servlet adaptor in web.xml). Notez que pour accéder à toutes les ressources il faudra préfixer

les chemins par

/resources .
/resources
.

Depuis la nouvelle classe créée

HelloEnsma

(méthode putXml ).

HelloEnsma

, supprimer la méthode correspondant à la création d'une ressource

Dans le corps de la méthode String suivant

getXml()

utilisée pour récupérer la ressource Bonjour ENSMA, recopier le contenu

1. @GET

2. @Produces("application/xml")

3. public String getXml() {

4. return "<bonjour>Bonjour ENSMA</bonjour>";

5. }

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

Faire un Clean and Build à partir du projet construit correctement.

HelloENSMAWebServiceRestExercice1

et s'assurer que le projet se

Faire un Deploy à partir du projet. Le serveur Glassfish doit démarrer. Sur la console de Glassfish, un Web Service doit avoir été découvert, un message similaire doit être présent :

été découvert, un message similaire doit être présent : Ouvrir une fenêtre d'un navigateur Web et

Ouvrir une fenêtre d'un navigateur Web et tester la récupération de la ressource Bonjour ENSMA (requête GET via

l'URL

http://localhost:8080/HelloENSMAWebServiceRestExercice1/resources/helloensma

).

qui permet de récupérer la

ressource Bonjour ENSMA via des paramètres de requêtes. Ces paramètres seront donnés via le chemin et via l'en-

tête de la requête en utilisant respectivement les annotations suivant :

. Recopier le code

Ajouter une nouvelle méthode Java

getXmlWithParams

dans la classe

HelloEnsma

@PathParam et @HeaderParam

1.

@GET

2.

@Path("{id}")

3.

@Produces("application/xml")

4.

public String getXmlWithParams(

5.

@PathParam("id") String id,

6.

@DefaultValue("all") @HeaderParam("name") String name) {

7.

System.out.println(id);

8.

System.out.println(name);

9.

return "<bonjour>Bonjour ENSMA de la part de " + name + "</bonjour>";

10.

}

Saisir l'URL suivante depuis votre navigateur Web pour tester la récupération de la ressource Bonjour ENSMA :

localhost:8080/HelloENSMAWebServiceRestExercice1/resources/helloensma/27022011

.

http://

Le message au format

XML est retourné au navigateur.

Pour envoyer des paramètres au niveau de l'en-tête de la requête, nous utiliserons l'outil CURL qui est un outil en ligne de commande pour construire des requêtes HTTP. Télécharger et installer l'outil à partir de l'URL suivante :

http://curl.haxx.se/.

Depuis une invite de commande saisir la commande suivante :

Depuis une invite de commande saisir la commande suivante : À partir d'un navigateur Web, afficher

À partir d'un navigateur Web, afficher le contrat de description WADL via l'URL suivante :

http://localhost:8080/

HelloENSMAWebServiceRestExercice1/resources/application.wadl

.

Utiliser l'outil de test de service Rest fourni par Netbeans (menu contextuel du projet et choisir l'élément Test RESTful Web Services).

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

Envoyer une requête HTTP de type GET pour récupérer une ressource Bonjour ENSMA. Noter qu'il n'est pas possible avec cet outil de modifier l'en-tête d'une requête HTTP.

Télécharger et installer l'outil SOAP-UI à partir de l'URL suivante :

un projet à partir de ce contrat de description.

http://www.soapui.org/. Ouvrir SOAP-UI et créer

http://www.soapui.org/. Ouvrir SOAP-UI et créer Envoyer une requête HTTP de type GET pour récupérer une

Envoyer une requête HTTP de type GET pour récupérer une ressource

façon à transmettre également les paramètres via le chemin et via l'en-tête de la requête HTTP.

Bonjour ENSMA. Modifier cette requête de

la requête HTTP. Bonjour ENSMA. Modifier cette requête de - 5 -
Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

Exercice 2 - Développer un Service Web REST : Interrogation et réservation de train

But

• Développer un service web REST à partir d'une classe Java.

• Utilisation d'un Sub-Resource Locator.

• Mise en place d'un CRUD complet.

• Déployer sous GlassFish et tester le service web avec CURL.

Description

Le service Web REST de ce deuxième exercice consiste à créer un système CRUD pour l'interrogation et la réservation de trains. Les ressources manipulées par les services sont donc un train et une réservation. Le service Web REST doit pouvoir lister l'ensemble des trains, lister les trains qui satisfont un critère de recherche (ville de départ, ville d'arrivée, jour de départ et un intervalle de temps), de créer, de modifier, de supprimer et de lister une réservation pour un client donné. Nous insisterons sur l'accessibilité des services et non sur le code métier.

Étapes à suivre

Créer un nouveau projet File -> New Project

puis Java Web et choisir Web Application, faire Next.

Dans le nom du projet choisir le nom

BookTrainWebServiceRestExercice2

.

Comme type de serveur d'application, choisir GlassFish 3 et comme version Java EE choisir la version 6 puis faire Next.

Ne rien choisir dans les options de Frameworks, puis faire Finish. L'initialisation d'un projet Web est en cours.

Créer la classe Train (dans le package soa.jaxrslabs.booktrainwebservicerestexercice2 ) qui modélise le concept de
Créer la classe
Train
(dans le package
soa.jaxrslabs.booktrainwebservicerestexercice2
) qui modélise le concept de
Train
et qui contient un attribut
String numTrain
(identifiant fonctionnel d'un train), un attribut
String villeDepart
(la ville
de départ du train), un attribut
String villeArrivee
(la ville d'arrivée du train), un attribut
int heureDepart
(heure de départ

depuis la ville de départ). Ajouter des modificateurs et des accesseurs sur tous les attributs. Voir le code suivant

1.

@XmlRootElement(name = "train")

2.

public class Train {

3.

4.

private String numTrain;

5.

private String villeDepart;

6.

private String villeArrivee;

7.

private int heureDepart; // Format : 1230 = 12h30

8.

9.

public Train() {

10.

}

11.

12.

public Train(String numTrain, String villeDepart, String villeArrivee, int heureDepart) {

13.

this.numTrain = numTrain;

14.

this.villeDepart = villeDepart;

15.

this.villeArrivee = villeArrivee;

16.

this.heureDepart = heureDepart;

17.

}

18.

19.

public int getHeureDepart() {

20.

return heureDepart;

21.

}

22.

23.

public void setHeureDepart(int heureDepart) {

24.

this.heureDepart = heureDepart;

25.

}

26.

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

27. // A compléter

28. }

Créer la classe BookTrainBD

qui sert à persister toutes les informations concernant le service Web de cet exercice.

1.

public class BookTrainBD {

2.

3.

private static List<Train> trains = new ArrayList<Train>();

4.

5.

static {

6.

trains.add(new Train("TR123", "Poitiers", "Paris", 1250));

7.

trains.add(new Train("TR127", "Poitiers", "Paris", 1420));

8.

trains.add(new Train("TR129", "Poitiers", "Paris", 1710));

9.

}

10.

11.

public static List<Train> getTrains() {

12.

return trains;

13.

}

14.

}

) permettant l'accès

aux services Web REST de la ressource

de l'annotation @Path) puis ajouter trois méthodes qui permettent respectivement de retourner la liste des trains, un train en fonction de son identifiant fonctionnel et une recherche de trains par critères passés en paramètre de la requête (ville de départ, ville d'arrivée et heure de départ). Pour cette dernière méthode, le sous-chemin associé est

Créer la classe TrainResource (dans le package

(utilisation

soa.jaxrslabs.booktrainwebservicerestexercice2

Train
Train

. Définir comme chemin de ressource racine la valeur

/trains
/trains
/search
/search

. Noter que le format de retour des services est du XML.

1.

@Path("/trains")

2.

// Compléter le format de représentation des services

3.

public class TrainResource {

4.

5.

public TrainResource() {

6.

}

7.

8.

// Compléter la méthode HTTP utilisée pour déclencher cette méthode

9.

public List<Train> getTrains() {

10.

System.out.println("getTrains");

11.

12.

return BookTrainBD.getTrains();

13.

}

14.

15.

// Compléter la méthode HTTP utilisée pour déclencher cette méthode

16.

// Compléter le chemin suivant ce template numTrain-TR123 où TR123 est une chaine variable

17.

public Train getTrain(@PathParam("id") String numTrain) {

18.

System.out.println("getTrain");

19.

20.

for (Train current : BookTrainBD.getTrains()) {

21.

if (numTrain.equals(current.getNumTrain())) {

22.

return current;

23.

}

24.

}

25.

return null;

26.

}

27.

28.

// Compléter la méthode HTTP utilisée pour déclencher cette méthode

29.

// Compléter de façon à définir le chemin suivant /trains/search pour invoquer cette méthode

30.

public List<Train> searchTrainsByCriteria(@QueryParam("departure") String

departure, @QueryParam("arrival")

31.

String arrival, @QueryParam("arrivalhour") String arrivalHour) {

32.

System.out.println("searchTrainsByCriteria");

33.

34.

return BookTrainBD.getTrains().subList(0, 2);

35.

}

36.

}

À partir d'un navigateur Web invoquer les trois services définis ci-dessus.

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

http://localhost:8080/BookTrainWebServiceRestExercice2/resources/trains

 

http://localhost:8080/BookTrainWebServiceRestExercice2/resources/trains/numTrain-TR123

http://localhost:8080/BookTrainWebServiceRestExercice2/resources/trains/search?

 

departure=poitiers&arrival=paris&arrivalhour=1250

 

Créer la classe

le concept de réservation de

BookTrain Train Train currentTrain
BookTrain
Train
Train currentTrain

(toujours dans le package

soa.jaxrslabs.booktrainwebservicerestexercice2

String numBook

) qui modélise

(identifiant fonctionnel de la réservation

et qui contient un attribut

(association sur le train de la réservation), un attribut

(nombre de places réservées). Ajouter des modificateurs et des accesseurs sur tous les attributs.

d'un train), un attribut

int numberPlaces

1.

@XmlRootElement(name = "booktrain")

2.

public class BookTrain {

3.

4.

private String bookNumber;

5.

6.

private Train currentTrain;

7.

8.

private int numberPlaces;

9.

10.

public String getBookNumber() {

11.

return bookNumber;

12.

}

13.

14.

public void setBookNumber(String bookNumber) {

15.

this.bookNumber = bookNumber;

16.

}

17.

18.

public Train getCurrentTrain() {

19.

return currentTrain;

20.

}

21.

22.

23.

}

Compléter la classe de train.

BookTrainBD

de façon à persister les informations concernant les services liés à la réservation

1.

public class BookTrainBD {

2.

3.

private static List<Train> trains = new ArrayList<Train>();

4.

5.

private static List<BookTrain> bookTrains = new ArrayList<BookTrain>();

6.

7.

static {

8.

trains.add(new Train("TR123", "Poitiers", "Paris", 1250));

9.

trains.add(new Train("TR127", "Poitiers", "Paris", 1420));

10.

trains.add(new Train("TR129", "Poitiers", "Paris", 1710));

11.

}

12.

13.

public static List<Train> getTrains() {

14.

return trains;

15.

}

16.

17.

public static List<BookTrain> getBookTrains() {

18.

return bookTrains;

19.

}

20.

}

) permettant

l'accès aux services Web REST de la ressource Réservation. Quatre méthodes sont à définir. La première

(méthode POST). La deuxième

getBookTrains (méthode GET) est utilisée pour lister l'ensemble des réservations. La troisième getBookTrain

Créer la classe

BookTrainResource

(dans le package

soa.jaxrslabs.booktrainwebservicerestexercice2

Réservation

createBookTrain

est invoquée pour la création d'une ressource

(méthode GET) permet de retourner les informations d'une réservation à partir d'un numéro de réservation.

Finalement

removeBookTrain

(méthode DELETE) permet de supprimer une réservation.

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

1. public class BookTrainResource {

2.

3.

// Compléter la méthode HTTP utilisée pour déclencher cette méthode

4.

public String createBookTrain(String numTrain, int numberPlaces) {

5.

Train currentTrain = null;

6.

for (Train current : BookTrainBD.getTrains()) {

7.

if (current.getNumTrain().equals(numTrain)) {

8.

currentTrain = current;

9.

}

10.

}

11.

if (currentTrain == null) {

12.

return "";

13.

}

14.

15.

BookTrain newBookTrain = new BookTrain();

16.

newBookTrain.setNumberPlaces(numberPlaces);

17.

newBookTrain.setCurrentTrain(currentTrain);

18.

newBookTrain.setNumBook(Long.toString(System.currentTimeMillis()));

19.

BookTrainBD.getBookTrains().add(newBookTrain);

20.

21.

return newBookTrain.getNumBook();

22.

}

23.

24.

// Compléter la méthode HTTP utilisée pour déclencher cette méthode

25.

public List<BookTrain> getBookTrains() {

26.

System.out.println("getBookTrains");

27.

return BookTrainBD.getBookTrains();

28.

}

29.

30.

// Compléter la méthode HTTP utilisée pour déclencher cette méthode

31.

// Compléter le chemin de façon à intégrer un template parameter (id)

32.

@Path("{id}")

33.

public BookTrain getBookTrain(@PathParam("id") String bookNumber) {

34.

List<BookTrain> bookTrains = BookTrainBD.getBookTrains();

35.

36.

for (BookTrain current : bookTrains) {

37.

if (current.getNumBook().equals(bookNumber)) {

38.

return current;

39.

}

40.

}

41.

return null;

42.

}

43.

44.

// Compléter la méthode HTTP utilisée pour déclencher cette méthode

45.

// Compléter le chemin de façon à intégrer un template parameter (id)

46.

public void removeBookTrain(@PathParam("id") String bookNumber) {

47.

BookTrain currentBookTrain = null;

48.

for (BookTrain current : BookTrainBD.getBookTrains()) {

49.

if (current.getNumBook().equals(bookNumber)) {

50.

currentBookTrain = current;

51.

}

52.

}

53.

BookTrainBD.getBookTrains().remove(currentBookTrain);

54.

}

55.

}

L'accès à la ressource

locator. Compléter la classe

Réservation TrainResource .
Réservation
TrainResource
.

(via la classe

BookTrainRessource

) est obtenu via l'utilisation d'un sub-resource

public class TrainResource {

public TrainResource() {

}

// Compléter de façon à définir le chemin suivant /trains/booktrains pour invoquer cette méthode public BookTrainResource getBookTrainResource() { return new BookTrainResource();

}

}

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

À partir de CURL et SOAP-UI, invoquer chaque service (création d'une réservation, liste les réservations, obtenir les informations d'une réservation et supprimer la réservation créée).

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

Exercice 3 - Développer un client de Service Web REST : Interrogation et réservation de train

But

• Développer un client de service web REST à partir de l'API JERSEY.

• Création des requêtes via le patron Builder.

Description

Ce troisième exercice se propose de fournir un client pour l'accès au service Web REST défini dans l'exercice 2. Une interface graphique en Java/Swing permet de contrôler les appels aux différents services.

permet de contrôler les appels aux différents services. Étapes à suivre Créer un nouveau projet File

Étapes à suivre

Créer un nouveau projet File -> New Project

puis Java et choisir Java Application, faire Next.

Pour le nom du projet choisir le nom

BookTrainClientWebServiceRestExercice3

.

Pour

le

nom

de

la

classe

principale

soa.jaxrslabs.booktrainclientwebservicerestexercice3.BookTrainClientMain

Create Main Class

).

choisir

Ajouter les bibliothèques Jersey (JAX-RS RI) et la bibliothèque décrivant l'API JAX-RS.

Compléter la classe

seront à compléter par la suite (

BookTrainClientMain

à partir du code ci-dessous. Noter que les traitements des trois boutons

callGetBookTrains()

,

createBookTrains()

)

callGetTrains() ,

1. public class BookTrainClientMain extends JFrame {

2.

3.

public BookTrainClientMain() {

4.

super("Client Réservation Train");

5.

6.

this.initializeService();

7.

this.setLayout(new GridLayout(3,1,10,10));

8.

JPanel panelTrains = new JPanel();

9.

panelTrains.setLayout(new GridLayout(1,1));

10.

11.

JButton getTrains = new JButton("GetTrains");

12.

panelTrains.add(getTrains);

13.

getTrains.addActionListener(new ActionListener() {

14.

public void actionPerformed(ActionEvent e) {

15.

callGetTrains();

16.

}

17.

});

18.

19.

JPanel panelBookTrains = new JPanel();

20.

panelBookTrains.setLayout(new GridLayout(1,1));

21.

22.

JButton getBookTrains = new JButton("GetBookTrains");

23.

panelBookTrains.add(getBookTrains);

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

24.

getBookTrains.addActionListener(new ActionListener() {

25.

public void actionPerformed(ActionEvent e) {

26.

callGetBookTrains();

27.

}

28.

});

29.

30.

JPanel createBookTrainFormPanel = new JPanel();

31.

createBookTrainFormPanel.setLayout(new GridLayout(1,3));

32.

final JTextField numTrain = new JTextField();

33.

final JTextField numberPlaces = new JTextField();

34.

JButton createBookTrains = new JButton("CreateBookTrain");

35.

createBookTrains.addActionListener(new ActionListener() {

36.

public void actionPerformed(ActionEvent e) {

37.

createBookTrains(numTrain.getText(), numberPlaces.getText());

38.

}

39.

});

40.

createBookTrainFormPanel.add(createBookTrains);

41.

createBookTrainFormPanel.add(numTrain);

42.

createBookTrainFormPanel.add(numberPlaces);

43.

44.

45.

this.add(panelTrains);

46.

this.add(panelBookTrains);

47.

this.add(createBookTrainFormPanel);

48.

49.

this.pack();

50.

this.setVisible(true);

51.

}

52.

53.

public static void main(String[] args) {

54.

new BookTrainClientMain();

55.

}

56.

}

Ajouter une méthode

l'emplacement déterminé par l'exercice 2.

initializeService()

qui permet d'initialiser l'accès au service Web REST. Adapter l'URL selon

1.

private void initializeService() {

2.

ClientConfig config = new DefaultClientConfig();

3.

Client client = Client.create(config);

4.

service = client.resource(

5.

UriBuilder.fromUri("http://localhost:8080/BookTrainWebServiceRestExercice2/resources/").build());

6.

}

Ajouter également un attribut service de type WebResource.

Ajouter une méthode

callGetTrains()

qui permet de lister l'ensemble des trains.

private void callGetTrains() { List<Train> result = service .path("trains") .accept(MediaType.APPLICATION_XML) .get(new GenericType<List<Train>>() {}); for(Train current : result) {

System.out.println(current.getNumTrain() + " - " + current.getVilleDepart() + " - " + current.getVilleArrivee() + " - " + current.getHeureDepart());

}

}

Recopier

dans

le

projet

BookTrainClientWebServiceRestExercice3

la

classe

Train
Train

depuis

le

projet

BookTrainWebServiceRestExercice2

en

respectant

le

package

soa.jaxrslabs.booktrainclientwebservicerestexercice3

).

Ajouter une méthode

d'un train. Compléter le code ci-dessous de façon à prendre en compte les paramètres de requêtes et l'appel à une méthode HTTP POST. Pour rappel, le service de création retourne un numéro de réservation (type String).

qui permet de créer une réservation

createBookTrains(String numTrain, String numberPlaces)

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

private void createBookTrains(String numTrain, String numberPlaces) { String numBook = service.path("trains") .path("booktrains") .??? .??? .??? System.out.println(numBook);

}

Ajouter une méthode

Compléter le code ci-dessous.

callGetBookTrains()

qui permet de récupérer l'ensemble des réservations qui ont été créées.

private void callGetBookTrains() { List<BookTrain> result = service .path("trains") .path("booktrains") .accept(MediaType.APPLICATION_XML) .get(new GenericType<List<BookTrain>>() {}); for(BookTrain current : result) { System.out.println(current.getNumBook() + " - " + current.getCurrentTrain().getNumTrain() + " - " + current.getNumberPlaces());

}

}

Recopier

dans

le

projet

BookTrainClientWebServiceRestExercice3

la

classe

BookTrain
BookTrain

depuis

le

projet

BookTrainWebServiceRestExercice2

en

respectant

le

package

soa.jaxrslabs.booktrainclientwebservicerestexercice3

).

Exécuter le programme en vous assurant que le service Web REST défini dans l'exercice 2 est déployé et opérationnel.

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3

Tutoriel sur le développement de services Web REST avec JAX-RS et Netbeans : Leçon 3 par Mickael BARON

Remerciements

http://mbaron.developpez.com/soa/soapuilesson1 : Tests fonctionnels de Web Services avec SOAP-UI.

http://mbaron.developpez.com/soa/jaxwslesson2 : Développement de Web Services avec JAX-WS et Netbeans.

Je tiens à remercier Claude Leloup pour sa relecture orthographique attentive de cet article.