Java ws restful

De The Linux Craftsman
Aller à la navigation Aller à la recherche

Introduction

Après la lecture du cours sur les Web Services, nous allons voir comment "fabriquer" notre propre Web Service Restful avec JAX-RS, GSON et Tomcat.

Ce Web Service permettra le CRUD (Create / Read / Update / Delete) d'utilisateurs, fonctionnalité plus que nécessaire dans les applications...

JAX-RS

Java définit le support de REST à travers la JSR 311 (Java Specification Request). Cette spécification est appelée JAX-RS (The Java API for RESTful Web Services).

JAX-RS utilise des annotations pour définir le caractère RESTful de certaines classes Java.

Jersey

JAX-RS étant uniquement une spécification (un bout de papier) nous n'allons pas pouvoir faire grand chose si nous n'utilisons pas une librairie qui implémente ces spécifications.

C'est justement l'objectif de Jersey que vous pouvez télécharger en cliquant sur le lien ci-dessous:

Jersey download link.png

GSON

Comme décrit dans le cours, On manipule des représentations des ressources, par les ressources directement.

La représentation de nos ressource se fera en JSON et l'implémentation que nous allons utiliser et celle faite par Google: GSON.

Vous pouvez la télécharger ici

Préparation du projet

Tout d'abord, il faut créer un projet sous Eclipse comme décrit ici.

Ajout des librairies

Il faut extraire les librairies précédemment téléchargées dans le dossier WebContent → WEB-INF → lib de votre projet:

Adding lib tomcat ws.png

Modification du web.xml

C'est dans le fichier web.xml que nous allons ajouter les indications qui vont permettre à Tomcat de trouver vos Web Services. Rappel : ce fichier se trouve dans le répertoire WebContent → WEB-INF

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>fr.pigier.UserWS</display-name>
	<servlet>
		<servlet-name>User REST Service</servlet-name>
		<servlet-class>fr.pigier.user.rest.UserWS</servlet-class>
		<init-param>
			<param-name>jersey.config.server.provider.packages</param-name>
			<param-value>fr.pigier.user.rest</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>User REST Service</servlet-name>
		<url-pattern>/rest/*</url-pattern>
	</servlet-mapping>
</web-app>

Quelques explications s'imposent:

  • <display-name>...</display-name> → permet de définir le nom de l'application.
  • <servlet>...</servlet> → permet de définir une Servlet.
    • <servlet-name>...</servlet-name> → nom de la Servlet.
    • <servlet-class>...</servlet-class> → classe de la Servlet.
    • <init-param>...</init-param> → définit un paramètre à passer à la Servlet
      • <param-name>...</param-name> → le nom du paramètre
      • <param-value>...</param-value> → sa valeur
    • <load-on-startup>1</load-on-startup> → permet de démarrer la Servlet au démarrage de la WebAPP (application)
  • <servlet-mapping></servlet-mapping> → permet de définir un mapping entre une Servlet et une URL
    • <servlet-name>...</servlet-name> → le nom de la Servlet comme définit dans la balise <servlet>
    • <url-pattern>...</url-pattern> → l'URL utilisée pour joindre la Servlet