Servidor RESTful sin contenedor Java EE: Grizzly, Jersey y Maven
¿Quieres implementar un servidor RESTful sin usar GlassFish, JBoss, Tomcat, Wildfly, Payara, Jetty, WebLogic ni nada parecido? ¿y en Java sin usar Node.js?
Bueno, aquí les comparto una manera de montar de montar un servidor RESTful usando Jersey pero ejecutable desde la línea de comandos.
Jersey tiene un arquetipo en Maven que nos prepara un proyecto listo para adaptarlo a nuestra manera.
Desde la consola del sistema operativo podemos poner este comando:
mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false -DgroupId=com.example.rest -DartifactId=restful-standalone -Dpackage=com.apuntesdejava -DarchetypeVersion=2.22.1
Y listo, tenemos preparado nuestro servidor. Nos creará una clase
Para crear nuestro servicio, bastará con crear una clase con la anotación
Pero para mi aplicación necesito agregar la biblioteca del driver de Java DB, además de las dependencias necesarias para implementar JPA.
Ahora, hacemos las clases necesarias para usar JPA con Base de datos. Pudieron haber utilizado el que sea como Hibernate, JDBC, el que sea. Para mi comodidad usé JPA.AH! no olvidar colocar la notación
Y listo! Funciona de maravilla.
Aquí el vídeo usando NetBeans
https://bitbucket.org/apuntesdejava/restful-standalone
Bueno, aquí les comparto una manera de montar de montar un servidor RESTful usando Jersey pero ejecutable desde la línea de comandos.
Jersey tiene un arquetipo en Maven que nos prepara un proyecto listo para adaptarlo a nuestra manera.
Desde la consola del sistema operativo podemos poner este comando:
mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false -DgroupId=com.example.rest -DartifactId=restful-standalone -Dpackage=com.apuntesdejava -DarchetypeVersion=2.22.1
Y listo, tenemos preparado nuestro servidor. Nos creará una clase
Main
que será la única clase que estará en modo de servidor y configurará los servicios REST de nuestra aplicación.
Para crear nuestro servicio, bastará con crear una clase con la anotación
@Path
Implementando base de datos
Ahora bien, haremos que nuestro servicio utilice una base de datos. Para este ejemplo usé JPA, que tranquilamente puede correr fuera de un contenedor JavaEE. Me conecté a la base de datos de ejemplo de Java DB usando el archivopersistence.xml
Pero para mi aplicación necesito agregar la biblioteca del driver de Java DB, además de las dependencias necesarias para implementar JPA.
<dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>eclipselink</artifactId> <version>2.5.2</version> </dependency> <dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId> <version>2.5.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.derby</groupId> <artifactId>derbyclient</artifactId> <version>10.12.1.1</version> </dependency>
Ahora, hacemos las clases necesarias para usar JPA con Base de datos. Pudieron haber utilizado el que sea como Hibernate, JDBC, el que sea. Para mi comodidad usé JPA.AH! no olvidar colocar la notación
@XmlRootElement
en cada objeto que van a devolver al servicio.El servicio
Y bien, el servicio es bastante sencillo. Hice solo dos métodos: leer todos y obtener uno en base a un ID:
Ojo al Piojo, es necesario agregar una dependencia más para poder convertir los objetos obtenidos de la base de datos y convertirlo en JSON.
<dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>2.22.1</version> </dependency>
Y listo! Funciona de maravilla.
El vídeo
¿No me creen?Aquí el vídeo usando NetBeans
El código fuente
Y, como en todo post de este humilde blog, comparto el código bajo git.https://bitbucket.org/apuntesdejava/restful-standalone
Comentarios
Publicar un comentario
Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups
Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/