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>
incline-training.com
UnqzMZQP Buy Valium…