REST con Java (JAX-RS) usando Jersey
Este articulo explica como desarrollar RESTful web services en Java con JAX-RS implementacion de Jersey.
En este ejemplo se usara SpringSource Tools Suite(Eclipse Helios), Java 1.6, SpringSource TC Server and JAX-RS 1.1. (Jersey 1.4).
1. REST - Representational State Transfer
1.1 Informacion General:
En una Arquitectura REST tipicamente se tiene un REST server, el cual provee acceso a los Clientes REST que acceden a consultar, modificar un Recurso REST.
Un RESTFul webservices es basados en metodos HTTP y en el concepto REST. Por lo general se define URI base para los servicios, los MIME-types sus soportes (XML, Text, JSON, user-defined,..) y un conjunto de operaciones (POST, GET, PUT, DELETE) que seran soportados. JAX-RS soporta la creacion de XML y JSON.
Java define el estandar de REST via JAX-RS (The Java API for RESTful Web Services) en JSR 311 . Jersey : es la implementación de referencia de esta especificación. Jersey contiene basicamente el core server y el core client. El core client provee una libreria para comunicar con el Server.
JAX-RS usa anotaciones que definen las clases pertinentes de REST.
2. Instalacion
Descargar
3. Crear tu primer RESTful Webservice
Crear un nuevo proyecto "Dynamic Web Project" "WebServiceOne".
Copiar todo los jars de la carpeta lib de zip Jersey dentro de "WEB-INF/lib".
Crear la clase domain.
package com.android.peru.wsone; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class WSOneAll { private String summary; private String description; public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }Crear la siguiente clase.
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/WSOneAll") public class WSOneAllResource { @GET @Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public WSOneAll getXML() { WSOneAll wsOneAll = new WSOneAll(); wsOneAll.setSummary("Este es mi primer WS."); wsOneAll.setDescription("JSON: Este es mi primer WS con XML, JSON"); return wsOneAll; } // This can be used to test the integration with the browser @GET @Produces( { MediaType.TEXT_XML }) public WSOneAll getHTML() { WSOneAll wsOneAll = new WSOneAll(); wsOneAll.setSummary("Este es mi primer WS."); wsOneAll.setDescription("XML: Este es mi primer WS con XML, JSON"); return wsOneAll; } }
3.3. Definir Jersey Servlet dispatcher
Necesitas registrar Jersey como servlet dispatcher para REST requests. abrir el archivo "web.xml" y modificar lo siguiente.Tip
El parametro "com.sun.jersey.config.property.package" define en que package buscara las clases Web Service.Correr la aplicacion web en el STS Server. Probar tu REST service con la siguiente url: "http://localhost:8080/WebServiceOne/rest/WSOneAll"..
Jersey contiene una libreria REST client. Esta libreria es usada para testing o para construir un REST client en Java.
Crear una nueva clase Java "com.android.peru.wsone.client.WSOneClient".
package com.android.peru.wsone.client; import java.net.URI; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriBuilder; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.config.ClientConfig; import com.sun.jersey.api.client.config.DefaultClientConfig; public class WSOneClient { public static void main(String[] args) { WSOneAllClient(); } private static void WSOneAllClient(){ ClientConfig config = new DefaultClientConfig(); Client client = Client.create(config); WebResource service = client.resource(getBaseURIWS()); System.out.println(service.path("rest").path("WSOneAll").accept( MediaType.TEXT_XML).get(String.class)); System.out.println(service.path("rest").path("WSOneAll").accept( MediaType.APPLICATION_JSON).get(String.class)); System.out.println(service.path("rest").path("WSOneAll").accept( MediaType.APPLICATION_XML).get(String.class)); }
private static URI getBaseURIWS() { return UriBuilder.fromUri( "http://localhost:8080/WebServiceOne").build(); } }
Thank you
Gracias, Espero sirva de ayuda a la gente que esta iniciando con Web Service, en especial REST.
David Motta B.
en el item 3.3 dice que "Necesitas registrar Jersey como servlet dispatcher para REST requests. abrir el archivo "web.xml" y modificar lo siguiente.", despues no aparece los que se debe modificar. gracias
ResponderEliminarCopio la configuracion del Web.xml
ResponderEliminarcom.android-peru.wsone
Jersey REST Service
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
com.android.peru.wsone
1
Jersey REST Service
/rest/*
El blogger no soporta comentar codigos XML,
ResponderEliminarfavor por casualidad no tienes como hacerlo co Netbeans.
ResponderEliminarenviar al eitimfernando@hotmail.com
gracias.