Crea Servicio REST con JAVA

api_java_tomcat_feature_image

Seguro has trabajado con servicios web utilizando el protocolo Soap en Java , pero en esta ocasión quiero explicar como crear un servicio Web utilizando REST la transferencia de estado representacional, con Java y Tomcat como servidor.

JAVA VERSIONES

Para realizar el proyecto estaremos trabajando con la versión de JAVA 1.8.033, en este caso puedes descargar el SDK (Librerías completas de JAVA) o el JRE(De producción o las necesarias para que funcionen los ejecutables)

INSTALACIÓN

Si estamos en un ambiente de Windows, recomendaría utilizar el msi, o instalador para que instales el JAVA luego  de instalarlo verifica si lo tienes funcionando como variable de entorno para esto puedes acceder a tu Línea de comandos y colocar java -version.

servidor_rest_java_tomcat_java_version

Si no encuentra el comando entonces tenemos que configurar para eso ingresamos a las variables de entorno puede ser desde Mi PC – Propiedades – Configuración avanzada del sistema – Opciones avanzadas – Variables de entorno.

En ese lugar buscamos la variable path y ahí colocamos la ruta del JRE descargado que apunte a la carpeta BIN.

servidor_rest_java_tomcat_path_environment_variable

También agreguemos como nueva variable una llamada JAVA_HOME y agreguemos la ruta a nuestro BIN. Con estas configuraciones reiniciamos la línea de comandos y ejecutamos java -version.

ECLIPSE

Como IDE para desarrollar estaremos utilizando un IDE que sea compatible con nuestra versión de JAVA o JRE, en este caso puede ser el Clásico, Juno o Web, eso queda a decisión del que mas se ajusten pero es importante que utilice la versión del JRE para el proyecto.

LIBRERÍAS

Para poder crear los servicios utilizaremos las siguientes librerías:

JERSEY

Utilizaremos la especificación JAX-RS para implementar los servicios REST en JAVA para esto descargaremos la librería Jersey JAX-RS 2.5 RI Bundle.

JACKSON PARSE API

Para utilizar poder Utilizar comunicación con JSON podemos utilizar la librería Jackson API, ya que Jersey no tiene incluido. Para esto debemos descargar los siguientes paquetes:

servidor_rest_java_tomcat_jackson_libraries_json

IMPLEMENTANDO LAS LIBRERÍAS

Ahora para configurar las librerías en nuestro eclipse, vamos a agregar como librerías al entorno para esto nos dirigimos al menú:

Window – Preferences – Java – Build Path.

servidor_rest_java_tomcat_configure_libraries

Ahora presionamos en Nueva y vamos a colocarle el nombre JAX-RS-Jersey-Api. Dentro de esta vamos a ir agregando como librerías externas cada .jar que tenemos en las siguientes carpetas:

lib

ext

api.

servidor_rest_java_tomcat_jersey_add_libraries

Lo mismo vamos a realizar con la librería Jackson, le colocaremos el nombre Jackson-Parse-Api y agregamos todos los .jar que nos descargamos.

servidor_rest_java_tomcat_jackson_add_libraries

TOMCAT

Ahora configuremos nuestro servidor, lo realizaremos con Tomcat que nos permite colocar aplicaciones ligeras rápidamente podemos revisar todas sus características en el siguiente aquí. En este caso utilizaremos la versión 7 que es compatible con el JRE que estamos utilizando.

El proceso es buscar la versión que vamos a utilizar nos descargamos y seguido de esto la descomprimimos en una carpeta que pueden llamarle c:/tomcat .

servidor_rest_java_tomcat_path_tomcat

En esta carpeta estarán todas las configuraciones de nuestro servidor, podemos editar archivos de configuración para que el tomcat seleccione que JRE utilizar pero de momento si tenemos instalado 1 solo JRE como lo hicimos utilizará ese para arrancar ahora realizamos las pruebas, ingresemos a línea de comandos a la ruta de nuestro tomcat/bin/ y lo iniciamos con startup.bat start.

servidor_rest_java_tomcat_start_tomcat

Como podemos ver si no tenemos ningún problema nos abrirá una nueva pantalla y nos mostrará el mensaje Server startup in 6017 ms. Con esto podemos ver que ya nuestro server esta ejecutándose.

Ahora configuremos esto dentro de nuestro Eclipse vamos a la opción Window – Preferences – Server – Runtime Environments, aquí podemos agregar nuestro nuevo servidor. Para esto presionamos Nuevo.

servidor_rest_java_tomcat_eclipse_server_configuration

Presionamos Add, y seleccionamos la versión de Tomcat y luego de esto el JRE que utilizamos y lo agregamos. Ahora ya tendríamos con esto nuestro servidor dentro de Eclipse. Que ventajas nos trae esto:

1- Podemos depurar nuestro proyecto.

2. Podemos enviar a consola mensajes para ver como está funcionando todo.

Bueno en resumen podemos saber que pasa y evitamos estar publicando el proyecto para cada prueba y perder tiempo.

servidor_rest_java_tomcat_eclipse_server_tomcat_version

INICIANDO EL PROYECTO WEB

Ahora podemos comenzar con nuestro proyecto le colocaremos cualquier nombre RestServices por ejemplo:

servidor_rest_java_tomcat_new_dynamic_web_project

Ahora vamos a crearnos un paquete lo llamaremos com.restservice.api en el cual agregaremos nuestras clases necesarias para el proyecto.

Dentro de este paquete crearemos una clase que nos ayudará haciendo la inyección de las variables necesarias para utilizar Jersey.

En esta clase utilizaremos la anotación @ApplicationPath que nos especificará la url del servicio llamemos a la clase StartJerseyMainClass.

servidor_rest_java_tomcat_error_class_resource_config

Si nos presenta errores es porque no tenemos asociadas las librerías a nuestro proyecto recordemos que les configuramos global a nuestro entorno ahora tenemos que utilizarlas. Damos click derecho sobre nuestro proyecto y nos dirigimos a propiedades al ingresar a la pantalla vamos a Java Build Path – Add Library.

servidor_rest_java_tomcat_add_libraries_to_project

Presionamos en User Library y agregamos las 2 librerías que configuramos anteriormente.

servidor_rest_java_tomcat_add_libraries_to_project_b

Listo con eso ya tenemos nuestras librerías en el proyecto el código de nuestra primera clase sería:

package com.restservice.api;import javax.ws.rs.ApplicationPath;import org.glassfish.jersey.media.multipart.MultiPart;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;@ApplicationPath("apiservices")
public class StartJerseyMainClass extends ResourceConfig {public StartJerseyMainClass() {packages("com.fasterxml.jackson.jaxrs.json");packages("com.restservice.api");}
}

Ahora vamos a crear una nueva clase la cual contendrá nuestros servicios vamos a realizar la prueba una clase con un método del tipo GET, la llamaremos First.java. Y le agregamos el siguiente código.


package com.restservice.api;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.MediaType;@Path("first")
public class First {public First(){}@GET@Path("/{name}")@Produces(MediaType.APPLICATION_JSON)public String sayHello(@PathParam("name") String name) {return "Hello World From Jersey Api: "+ name;}}

Ahora podemos probar nuestra api la url que necesitamos utilizar es:

http://localhost:8080/RestServices/apiservices/first/polo

Le adjuntamos un nombre al final que es la manera en la que recibiríamos un parámetro y vamos a devolver como resultado ese texo. Para esto ejecutemos nuestro servidor en Eclipse y también podemos dar clic derecho sobre la clase principal y presionar Run On Server esto nos abrirá la consola y podemos ir observando el comportamiento de nuestro proyecto.

servidor_rest_java_tomcat_test_service

Listo con eso tenemos nuestro servicio Web Rest con Java y Tomcat funcionando tomar en cuenta que se puede recibir parámetros tipo Post y en la url, una nota importante en las pruebas muchas veces el Browser coloca en la ruta https a tu localhost y no va funcionar tu servicio o te mostrará el mensaje Http Header Parsing Error. Espero te sirva esta información si necesitas ayuda o soporte en tus proyectos contáctanos.