Web Service

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Jax RS

JAX-RS (Java API for RESTful Web Services) es una especificación de Java que define una API para crear servicios web RESTful (Representational State Transfer) en Java.

Jersey + Jackson

Jersey es un framework open source para el desarrollo de servicios web REST. Es una implementación de Jax RS.

Jackson es una librería que permite serializar objetos.

Creación de un Web Service sencillo

Desarrollamos el cliente (aplicación que llama)

1. Creamos un proyecto Java llamado micliente.

2. Creamos un paquete dentro del proyecto.

3. Creamos una clase llamada ClaseLlamada (llámala cómo quieras, pero no igual que el método) dentro de este proyecto con el siguiente método estático, que recibe un parámetro y devuelve el parámetro transformado.

public String saludar(String parametro){
	return "Hola " + parametro;
}				

3. Creamos una clase llamada Main con el siguiente código:

public static void main(String[] args) {
	ClaseLlamada obj = new ClaseLlamada();
	System.out.println(obj.saludar("Juan"));
}

Desarrollamos el servicio (aplicación que es llamada)

1. Creamos un nuevo proyecto Maven llamado miservicio.

2. Añadiremos a nuestro pom.xml las dependencias de Jersey:

<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson -->
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>3.1.1</version>
</dependency>


<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.containers/jersey-container-servlet -->
<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>3.1.1</version>
</dependency>


<!-- https://mvnrepository.com/artifact/org.glassfish.jersey/jersey-bom -->
<dependency>
    <groupId>org.glassfish.jersey</groupId>
    <artifactId>jersey-bom</artifactId>
    <version>3.1.1</version>
    <type>pom</type>
</dependency>

3. Creo un paquete dentro del src.

4. Creo la clase MiServicio:

@Path("/users")
public class MiServicio {
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	public Response getUsers() {
		List<User> users = GetUsers.getUsers();
		return Response.ok(users).build();
	}
}

5. Necesitaremos una clase especial para levantar el servicio:

@ApplicationPath("api")
	public class Configuration extends Application {
}

Notas:
El proyecto llamado debe estar desplegado en el servidor cuando lo llamemos.

Jersey + Jackson

Jersey es un framework open source para el desarrollo de servicios web REST. Es una implementación de Jax RS.

Jackson es una librería que permite serializar objetos.

pom.xml

<dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-server</artifactId>
	<version>1.8</version>
</dependency>
<dependency>
	<groupId>com.sun.jersey</groupId>
	<artifactId>jersey-json</artifactId>
	<version>1.8</version>
</dependency>

com.pablomonteserin.JSONService.java

@Path("/json/invitado")
public class JSONService {

	@GET
	@Path("/get")
	@Produces(MediaType.APPLICATION_JSON)
	public Invitado getInvitadoInJSON() {
		Invitado i = new Invitado("Juan");
		return i;
	}
	
	@GET
	@Path("/getList")
	@Produces(MediaType.APPLICATION_JSON)
	public ArrayList<Invitado> getInvitadosInJSON() {
		ArrayList<Invitado> invitados = new ArrayList();
		invitados.add(new Invitado("Paco"));
		invitados.add(new Invitado("Nuria"));
		invitados.add(new Invitado("Rosa"));
		
		return invitados;
	}
}

src/main/java/webapp/WEB-INF/web.xml

<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_2_5.xsd"
	version="2.5">	
	<servlet>
		<servlet-name>jersey-serlvet</servlet-name>
		<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
		<init-param>
			<param-name>com.sun.jersey.config.property.packages</param-name>
			<param-value>com.pablomonteserin</param-value>
		</init-param>
		<init-param>
			<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
			<param-value>true</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>jersey-serlvet</servlet-name>
		<url-pattern>/rest/*</url-pattern>
	</servlet-mapping>
</web-app>

Url de acceso:

dominio.com/nombre_proyecto/rest/url_de_la_clase/url_del_metodo
http://localhost:8081/pruebarest/rest/json/invitado/get

Paso de parámetros por GET

@GET
@Path("/get/{nombre}/{apellido}")
@Produces(MediaType.APPLICATION_JSON)
public Invitado getInvitadoInJSON(@PathParam("nombre") String nombre,@PathParam("apellido") String apellido) {
	System.out.println(nombre + " - " + apellido);
}
	
http://localhost:8081/pruebarest/rest/json/invitado/get/paco/rodriguez

Ejercicio CRUD librería

← Upload file (subir fichero)