Categorías del Tutorial

icono_twiter
Jose Manuel Sánchez Suárez

Consultor tecnológico de desarrollo de proyectos informáticos.

Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación

Somos expertos en Java/J2EE

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2010-01-12

Tutorial visitado 14.388 veces Descargar en PDF
Creación de servicios web RestFul, con soporte a persistencia, en NetBeans

Creación de servicios web RestFul, con soporte a persistencia, en NetBeans.

0. Índice de contenidos.

1. Introducción

En este tutorial vamos a analizar el soporte que nos proporciona NetBeans para la creación de servicios web RESTful, que den soporte a las operaciones típicas que se pueden realizar contra una tabla de base de datos; hablamos de un CRUD: create, read, update y delete.

El objetivo es la creación de un proyecto web y, mediante un wizard, la generación de una serie de servicios web que den soporte a dichas operaciones; NetBeans creará todo lo necesario para proporcionar dicho soporte y será precisamente eso, lo que analizaremos.

En la redacción de este tutorial se da por hecho que el lector tiene experiencia en JEE, en la construcción de servicios web RESTful y está familiarizado con NetBeans IDE. En caso contrario, podéis encontrar tutoriales relacionados con estas tecnologías en adictos.



2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 17' (2.93 GHz Intel Core 2 Duo, 4GB DDR3 SDRAM).
  • Sistema Operativo: Mac OS X Snow Leopard 10.6.1
  • NetBeans 6.7.1.
  • JDK 1.6.
  • GlassFish v.2.

3. Creación del proyecto web.

Lo primero necesario es la creación de un proyecto web java, para ello seleccionamos File > New Project... Java Web > Web Application.

Creación de servicios web RestFul en NetBeans.

En la siguiente pantalla asignamos un nombre y una ubicación al proyecto:

Creación de servicios web RestFul en NetBeans.

En la siguiente pantalla seleccionamos el servidor en el que correrá nuestra aplicación, nosotros vamos a seleccionar la versión 2 de GlassFish:

Creación de servicios web RestFul en NetBeans.

Si no tenemos configurado el servidor, debemos seleccionar su ubicación en disco:

Creación de servicios web RestFul en NetBeans.

Y asignar la contraseña de administración para que NetBeans pueda desplegar en GlassFish, por defecto: adminadmin.

Creación de servicios web RestFul en NetBeans.

Una vez asignado el servidor podemos asignar el contexto de la aplicación web:

Creación de servicios web RestFul en NetBeans.

Por último, podemos asignar el soporte a alguno de los siguientes frameworks, nosotros no los vamos a usar.

Creación de servicios web RestFul en NetBeans.

Tras pulsar finalizar, se creará el proyecto web y deberíamos tener un proyecto con una estructura similar a la que sigue:

Creación de servicios web RestFul en NetBeans.

4. Creación de los servicios web RESTful.

Lo primero es dar al proyecto el soporte necesario para hacer uso de alguna tecnología de persistencia de datos. En el soporte que proporciona NetBeans para realizar el CRUD a través de los servicios RESTful, estos últimos delegan la persistencia en clases de entidad de la tecnología elegida.

Para ello, seleccionamos File > New File... Persistence > Persistence Unit

Creación de servicios web RestFul en NetBeans.

Asignamos un nombre a la unidad de persistencia, por defecto el nombre del proyecto con el sufijo PU, un proveedor de persistencia y una fuente de datos.

Para este tutorial vamos a hacer uso del soporte por defecto de TopLink y de una base de datos de pruebas Derby que trae GlassFish, accesible a través de jndi con el datasource jdbc/sample.

Creación de servicios web RestFul en NetBeans.

El resultado es la creación de un fichero persistence.xml con la configuración seleccionada.

Ahora, con el soporte de persistencia, podemos crear lo necesario para acceder a las tablas de dicha base de datos.

Para ello, seleccionamos File > New File... Web Services > RESTful Web Services from Database

Creación de servicios web RestFul en NetBeans.

Seleccionamos una fuente de datos y las tablas elegidas para "publicar" su acceso a través de los servicios web.

Creación de servicios web RestFul en NetBeans.

Tras pulsar siguiente, se mostrará una pantalla como la que sigue, en la que se muestran las clases que se crearán y podremos asignar el paquete de las mismas.

Creación de servicios web RestFul en NetBeans.

Además de las clases de entidad, se crearán las propias clases de los servicios web y unos conversores, que examinaremos más tarde, en la siguiente pantalla podemos asignar el paquete de los mismos.

Creación de servicios web RestFul en NetBeans.

Tras pulsar finalizar, se crearán las clases necesarias y tendremos un proyecto con una estructura similar a la que sigue:

Creación de servicios web RestFul en NetBeans.

5. Examinando todo lo generado.

Las clases generadas las hemos dividido, conscientemente en los siguientes paquetes:

  • com.autentia.tutorials.netBeansRestFul.persistence: contiene las dos clases de entidad anotadas con el soporte de JPA necesario para ser persistidas. Se Generan una serie de namedQueries para poder realizar búsquedas sobre las mismas y las anotaciones de relación necesarias para vincularse.
  • com.autentia.tutorials.netBeansRestFul.service: contiene los servicios web generados y el servicio de persistencia que tiene el acceso al entityManager, que da acceso a la unidad de persistencia. Se crearán dos servicios web por cada entidad, para trabajar con el listado de entidades y con una entidad individual, y estarán anotadas con el soporte de jax-ws necesario para que los servicios sean publicados correctamente.
  • com.autentia.tutorials.netBeansRestFul.converter: contiene un conversor por cada servicio web, que son quien hacen uso de los mimos. Los conversores están anotados con jaxb y dan el soporte necesario para la serialización de ojetos a xml y viceversa. De este modo, cuando se solicita un cliente se obtiene la entidad y esta es convertida a xml para su devolución. La conversión de xml a objeto se realiza en las modificaciones e inserciones, puesto que lo que recibe el web service es un xml que debe ser convertido a entidad para persistirlo.


6. Probando los servicios web.

Ahora vamos a comprobar que todo lo generado funciona correctamente y, para ello, vamos a usar, también, el soporte de NetBeans.

Sobre el proyecto, pulsamos botón derecho y seleccionamos "Test RESTful Web Services", el proyecto se desplegará en GlassFish y se mostrará una página web, como la siguiente:

Creación de servicios web RestFul en NetBeans.

Desde esta página podemos realizar todas las operaciones disponibles a través de los servicios web.

  • Listar clientes: seleccionando customers o accediendo a la siguiente url: http://localhost:8080/RestFulSample/resources/customers/
  • Acceder a la información de un cliente: seleccionando customers > {customerId} o accediendo a la siguiente url: http://localhost:8080/RestFulSample/resources/customers/1
  • Realizar las operaciones de modificación o borrado a través de las opciones que proporciona la propia página de cliente, a través de los métodos: GET, PUT o DELETE..

Además nos permite seleccionar entre xml o json.



7. Conclusiones.

Cierto que no hemos tirado una línea de código y tenemos una funcionalidad bastante completa, ahora es cuestión de explotarla mediante el cliente adecuado, y la página web que se monta en torno a los servicios publicados nos permite testear bastante bien los mismos.

Hemos visto el ejemplo más completo, pero NetBeans también nos permite generar servicios web en base a entidades ya existentes, por si fuese esa vuestra casuística.

Un saludo.

Jose

jmsanchez@autentia.com

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Fecha publicación: 2010-01-21-15:50:36

Autor: thousand

Funciona de lujo, excelente tutorial.
He probado a hacer lo mismo con Hibernate y no lo consigo. Se genera bien toda la unidad de persistencia y el servicio, para al lanzar el test de prueba, y hacer un get en la interfaz da un fallo, que me parece que tiene que ver con que al servidor le falta algo.
¿Has probado con hibernate?