lang:java:rest
Ceci est une ancienne révision du document !
Il faut commencer par créer un projet Web Dynamic avec le support de JAX-RS (REST Web Service).
Ensuite, il faut créer le serveur en créant une classe normale. Pour Jersey, il est indispensable que le serveur soit dans un package
non vide.
Dans l'exemple ci-dessous, il faut aussi pour Tomcat et le projet la librairie java-json.jar (à mettre dans le dossier WebContent/lib
) qui facilitera la réponse au client.
- Serveur.java
package com.llgc; // import javax.ws.rs.ApplicationPath; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; // import javax.ws.rs.core.Application; import javax.ws.rs.core.MediaType; import org.json.JSONException; import org.json.JSONObject; @/*Application*/Path("/euro") public class Serveur/* extends Application*/ { @Path("{f}") @GET @Produces(MediaType.APPLICATION_XML) @Consumes(MediaType.APPLICATION_XML) public String traitementXml(@PathParam("f") Double f) { return "<conversion><euros>" + f / 6.65 + "</euros><francs>" + f + "</francs></conversion>"; } @Path("{f}") @GET @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public String traitementJson(@PathParam("f") Double f) throws JSONException { JSONObject jsonObject = new JSONObject(); jsonObject.put("Francs", f); jsonObject.put("Euros", f / 6.65); return jsonObject.toString(); } @Path("{f}") @GET @Produces(MediaType.TEXT_HTML) @Consumes(MediaType.TEXT_HTML) public String traitementPlainHtml(@PathParam("f") Double f) throws JSONException { JSONObject jsonObject = new JSONObject(); jsonObject.put("FrancsHMTLHTMLHTML", f); jsonObject.put("Euris", f / 6.65); return jsonObject.toString(); } }
- web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>REST</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <description>JAX-RS Tools Generated - Do not modify</description> <servlet-name>JAX-RS Servlet</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.llgc</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JAX-RS Servlet</servlet-name> <url-pattern>/convert/*</url-pattern> </servlet-mapping> </web-app>
Erreurs
javax.servlet.ServletException: Aucune classe servlet n'a été spécifiée pour la servlet JAX-RS Servlet
Il faut spécifier dans web.xml
la classe Serveur :
<servlet> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
Jersey 2
<servlet> <servlet-name>Jersey Web Application</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.llgc</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
La Classpath de Tomcat ne possède pas les libraires des dossiers lib
et ext
de Jersey.
lang/java/rest.1483914847.txt.gz · Dernière modification : 2017/01/08 23:34 de root