Conception d’un web-service avec RESTEASY

MISE EN PLACE D'UN WEB-SERVICE DE TYPE RESTFUL AVEC RESTEASY

1- Resteasy: C'est une implémentation de la spécification JAX-RS. JAX-RS fournit une API Java pour développer des WebService RestFul par-dessus le protocole HTTP.

2- Mise en place d'une application dans un conteneur de servlet (ici, TOMCAT) :
Configuration du web.xml :

<web-app id="WebApp_ID" version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>Restful Web Application</display-name>
	<context-param>
		<param-name>resteasy.scan</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>resteasy.servlet.mapping.prefix</param-name>
		<param-value>/rest</param-value>
	</context-param>
	<listener>
		<listener-class>
			org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
		</listener-class>
	</listener>
	<servlet>
		<servlet-name>resteasy-servlet</servlet-name>
		<servlet-class>
			org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
		</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>resteasy-servlet</servlet-name>
		<url-pattern>/rest/*</url-pattern>
	</servlet-mapping>
</web-app>

3- Implémentation des données échangées : User.java

@XmlRootElement(name = "user")
public class User {
 
	String username;
	String password;
	int pin;
 
	@XmlElement
	public String getUsername() {
		return username;
	}
 
	public void setUsername(String username) {
		this.username = username;
	}
 
	@XmlElement
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
 
	@XmlAttribute
	public int getPin() {
		return pin;
	}
 
	public void setPin(int pin) {
		this.pin = pin;
	}
 
}

Les annotations permettent de faire la liaison entre les balises et les attributs XML via :

  * XmlRootElement : annotation définissant la balise « racine » du fichier XML (annotation d'une classe ou d'une énumération)
  * XmlElement : annotation d'une propriété d'une classe (généralement) permettant de lier cette propriété à une balse XML 
  * XmlAttribute : annotation d'une propriété d'une classe permettant de lier cette dernière à un attribut d'une balise

4- Développement du service :

 @Path("/xml/user")
 public class XMLService {
  
 	@GET
 	@Path("/get")
 	@Produces("application/xml")
 	public User getUserInXML() {
  
 		User user = new User();
 		user.setUsername("gdelattre");
 		user.setPassword("password");
 		user.setPin(123456);
  
 		return user; 
  
 	}
  
 }

Grâce aux annotations, on peut très vite s'apercevoir que l'accès au service se fait via l'URL :
http://host:port/web_app_name/rest/xml/user/get
Cette URL regroupe les notions d'accessibilité de service en REST :

 * Le protocole de transfert des données utilisé est HTTP
 * host:port définit l'adresse du serveur d'application (localhost:8080 en local en général)
 * web_app_name : le nom de l'appli web
 * /rest/xml/user/get : /rest est défini dans le fichier web.xml (servlet-mapping) ; /xml/user est défini par l'annotation @Path de la classe User pour accéder aux différentes méthodes de la classe.

5- Execution en local :
En tapant d'url suivante dans un navigateur :

 http://localhost:8080/jax-rs-test/rest/xml/user/get

On obtient :

<user pin="123456">
	<password>password</password>
	<username>gdelattre</username>
</user>

Un commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.