JavaEE: JAX-RS

La siguiente mini demo que vamos a hacer será la implementación de un pequeño servicio REST. Ni siquiera vamos a implementar todas las posibles operaciones (GET, DELETE, PUT, POST), vamos a implementar una simple operación GET. Para ello al igual que en los casos anteriores vamos a necesitar Eclipse y Maven.

Lo primero, es crear el proyecto maven sin arquetipo al igual que anteriormente. Tras esto abriremos el fichero pom.xml y añadiremos el siguiente contenido en él:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.wordpress.infow</groupId>
    <artifactId>jaxrs</artifactId>
    <version>1.0</version>
    <packaging>war</packaging>
    <name>jaxrs</name>
    <url>http://www.infow.wordpress.com</url>

    <repositories>
        <repository>
            <id>JBoss repository</id>
            <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>2.3.6.Final</version>
        </dependency>
    </dependencies>
</project>

No hay nada que destacar en este fichero, y ya se dió una pequeña explicación de su contenido en el primer post de la serie, así que, salvo dudas, seguimos adelante sin detenernos más en este punto.

Lo siguiente será crear el fichero web.xml localizado, como siempre, en la ruta <webapp>/WEB-INF/web.xml. Su contenido será el siguiente:

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>JAX-RS Example</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>

Lo más destacable de este fichero, como siempre, partiendo de que ya conocemos la tecnología y no estámos haciendo un tutorial explicativo paso a paso, es la sección de mapping:

  • servlet-mapping: que será la ruta donde estarán mapeados los servicios REST que implementemos.

Después de esto, lo único que resta, es la creación en si de nuestro servicio REST. En este caso, al igual que en el resto de ejemplos, va a ser un simple servicio que devuelva un mensaje a partir de un nombre dado:

Servicio REST

@Path("/message")
public class MessageService {
    @GET
    @Path("/{name}")
    public Response getMessage(@PathParam("name") String name) {
        String message = "Hello " + ((name != null) && (name.length() > 0) ? name : "anonymous");

        return Response.status(200).entity(message).build();
    }
}

Cosas a tener en cuenta:

  • @Path: A nivel de clase. Define la ruta en la que encontraremos los diferentes métodos de este servicio REST.
  • @GET: Quiere decir que vamos a implentar la operación GET de REST.
  • @Path: A nivel de método. Será la ruta concreta con la que accederemos al método del servicio REST. Como podéis ver usando las {} se considerá un parámetro de entrada.
  • @PathParam: Parámetro de entrada del método del servicio REST obtenido a partir de la URL.

Por lo demás, no es más que un método normal y corriente.

Para acceder a él y probarlo, bastará con el acceso a la URL: <servidor>/rest/message/yourName

Bueno, hasta aquí esta pequeña demo de como crear desde cero un proyecto con servicios REST.

Como en veces anteriores, os dejo el código para que podáis usarlo y probarlo.

Codigo JAX-RS Hello World: JAX-RS

Todo hasta aquí. Nos vemos.

JavaEE: JAX-RS

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.