Recent comments

Rest Web Services JEE JAX RS

Rest Web Services:

Métodos HTTP:


Cabeceros de respuesta:



Representaciones con REST:


Anotaciones es JAX-RS:


Acerca JAX RS:


Integracion REST- WS y una aplicacion web:



Si estamos utilizando las librerías del proyecto Jersey para desplegar REST Web Services, es necesario integrarlo con nuestra aplicación WEB, debido a que JAX-RS todavía no viene integrado de manera nativa con las aplicaciones Web. En la figura podemos observar la configuración necesaria del API del proyecto de Jersey para poder producir y consumir RESTful Web Services. Para que la aplicación web reconozca las URI de los Servicios Web respectivos, es necesario configurar el Servlet del API de Jersey. Además, se debe especificar el elemento con el url-pattern a utilizar. Por ejemplo, para solicitar el recurso persona id = 101, se debe utilizar el siguiente URL: http://localhost:8080/sistema-sga/webservices/personas/101 Podemos observar que el URI mostrado incluye el url-pattern configurado anteriormente. Sin esta configuración no es posible ejecutar los Servicios Web.

Integracion EJB y JAX-RS:



Como hemos visto los EJB proveen una serie de servicios como seguridad, transaccionalidad, entre otras características. Este simple hecho tiene varias ventajas sobre clases puras de Java. El API JAX-RS en combinación con los EJB hace muy simple la integración entre estas tecnologías y así exponer la funcionalidad de los EJB por medio de RESTful Web Services. Existen varias formas de lograr esta integración. En la figura se observa una forma de realizar esta integración. Sin embargo, lo que sí se debe planear con cuidado son los URI a utilizar, ya que de esto dependerá la interface que utilizará el cliente para poder consumir los RESTful Web Services. Como podemos observar en la figura, para exponer la funcionalidad de un método EJB podemos crear una clase enfocada a exponer únicamente los métodos de los EJB que necesitemos. Sin embargo, esta clase a su vez debe ser un EJB de tipo Stateless para poder inyectar la funcionalidad de los EJB que se desee. Una vez realizada la inyección de dependencia del EJB, ya podemos utilizar los métodos del EJB, por ejemplo para desplegar el listado de personas. Sin embargo, debido a que estamos regresando objetos de tipo Persona, esta clase se convierte de código Java a XML utilizando el API de JAXB. Para ello es necesario agregar la anotación @XmlRootElement a la clase Persona. Con la configuración anterior ya tenemos listas nuestras clase Java para exponer funcionalidad de nuestros EJB como RESTful Web Services.

Documento WADL


Cuando creamos SOAP Web Services, el documento WSDL era el elemento centrar para describir el Web Service a utilizar. De manera similar, con RESTful Web Services tenemos un documento conocido como WADL ( Web Application Description Language). Este documento XML permite describir los RESTful Web Services de manera muy similar a un documento WSDL. Este tipo de documento XML está en sus primeras etapas de desarrollo, y no ha sido adoptado como un estándar, a diferencia de WSDL, sin embargo permite autodocumentar el Servicio WEB así como el XSD asociado a dicho Web Services. Esto tiene varias ventajas, por ejemplo, existe una herramienta para generar el código del lado del cliente. java -jar wadl2java.jar -o gen-src -p com.personas.rest http://localhost:8080/sistemasga/webservice/application.wadl Sin embargo, este tipo de herramientas han recibido varias críticas debido a que la simplicidad de la creación de clientes REST hace innecesario este tipo de herramientas. En nuestro caso crearemos el cliente de manera manual con ayuda de las clases del proyecto Jersey, el cual hace muy simple la tarea de crear clientes Java.

Descripcion de REST web service:







Cliente REST Web Service




Para crear un cliente Java, el proyecto http://jersey.java.net/ proporciona varias clases para hacer muy simple el consumo de REST Web Services. En la figura se puede observar un ejemplo para consultar la persona con el idPersona = 1. Al crear el ejercicio de SOAP Web Services, en automático nos creo las clases de dominio, por ejemplo, la clase de Persona. En este caso, debido a que no estamos utilizando herramientas de generación de código, es necesario crearlas manualmente. Para ello nos apoyaremos del documento WSDL, y del XSD asociado. Según hemos visto, para consultar estos documentos se debe utilizar la siguiente URL: http://localhost:8080/sistema-sga/webservice/application.wadl http://localhost:8080/sistema-sga/webservice/application.wadl/xsd0.xsd Basado en el documento XSD podemos observar los atributos que necesitaremos para nuestros objetos de Entidad, necesarios para procesar la petición REST. Para ello, deberemos crear la clase Persona y agregar la anotación @XmlRootElement de JAXB en la definición de la clase Java


No hay comentarios.