Está en la página 1de 24

INSTITUTO SAN IGNACIO

FACULTAD DE TECNOLOGA

Curso: TALLER DE INTEGRACION DE APLICACIONES

Trabajo Final
Servicios Web RESTFul
ALUMNO Lamas Ventura, Johny Martn BLOQUE

2P 6Q
PROFESOR
MARAVI PEREZ, EDWIN ANGEL

LIMA PERU

2013

Facultad de Tecnologa ISIL

TALLER DE INTEGRACION DE APLICACIONES

INSTRUCCIONES DEL TRABAJO 1. Conceptos (colocar links) 2. Word paso paso del ejemplo 3. Ejemplo (fuentes en Netbeans comprimido) 4. Video. Desarrollo

1 Conceptos
1.1 Introduccin Es imperativo que las aplicaciones Web modernas proporcionen interfaces de navegador de alta calidad que usen Asynchronous JavaScript and XML (Ajax) o el kit de herramientas Web de Google (GWT), as como tambin servicios web RESTful para las aplicaciones cliente externas. Este artculo propone usar un Resource Request Handler (RRH) (controlador de solicitudes de recursos) para Ajax/GWT y para las llamadas de aplicaciones clientes externas, y un Browser Request Handler (BRH) (controlador de solicitudes del navegador) para procesar las solicitudes del navegador y generar datos de salida a mostrar en el navegador. Ambos controladores comparten una misma capa Business Logic (lgica de negocios), que, a su vez, interacta con la capa Data Access (acceso a datos). La extraccin del RRH y el BRH simplifica el diseo y facilita la reutilizacin de cdigos, lo que conlleva a una arquitectura flexible y extensible. 1.2 Qu es REST?

La Transferencia de Estado Representacional (REpresentation State Transfer - REST) describe un estilo arquitectnico de sistemas en red como, por ejemplo, aplicaciones Web. El trmino fue utilizado por primera vez en el ao 2000 durante una disertacin doctoral por Roy Fielding, uno de los principales autores de la especificacin HTTP. REST est comprendida por una serie de limitaciones y principios arquitectnicos. Si una aplicacin o diseo cumple con esas limitaciones y principios, se considera RESTful. Uno de los principios REST de mayor importancia para las aplicaciones Web es que la interaccin entre el cliente y el servidor no tiene estado entre solicitudes. Cada solicitud del cliente al servidor debe contener toda la informacin necesaria para comprender la solicitud. El cliente no se dar cuenta si el servidor debe reiniciarse en ningn momento entre las solicitudes. Asimismo, las solicitudes sin estado pueden ser respondidas por cualquier servidor disponible, lo cual resulta apropiado en un entorno como la computacin en nube. El cliente puede almacenar los datos en cach para mejorar su rendimiento.

Facultad de Tecnologa ISIL

TALLER DE INTEGRACION DE APLICACIONES

En el extremo del servidor, el estado y la funcionalidad de la aplicacin se dividen en recursos. Un recurso es un elemento de inters, una identidad conceptual que se expone a los clientes. Algunos ejemplos de recursos son: objetos de aplicaciones, registros de bases de datos, algoritmos, etc. Cada recurso es de acceso nico a travs de una URI (Universal Resource Identifier identificador de recursos universal). Todos los recursos comparten una interfaz uniforme para la transferencia de estados entre cliente y servidor. Se usan mtodos estndar HTTP como GET, PUT, POST y DELETE. El motor del estado de la aplicacin es Hypermedia y las representaciones de recursos se interconectan mediante hipervnculos. Otro principio REST importante es el de sistema por capas, el cual implica que un componente no puede ver ms all de la capa inmediata con la cual interacta. Al restringir el conocimiento del sistema a una sola capa, se impone un lmite en la complejidad del sistema en general, promoviendo as la independencia de los sustratos. Las limitaciones arquitectnicas REST, aplicadas como un todo, generan una aplicacin que logra escalar sin problemas a grandes cantidades de clientes. Tambin se reduce la latencia en la interaccin entre clientes y servidores. La interfaz uniforme simplifica la arquitectura general del sistema y mejora la visibilidad de las interacciones entre subsistemas. REST simplifica la implementacin tanto para el cliente como para el servidor. 1.3 Comparacin entre los servicios web RESTful y los servicios web de estilo RPC

Hasta hace poco tiempo, los servicios web basados en SOAP construidos con arquitectura de estilo RPC representaban el enfoque ms popular para la implementacin de una Arquitectura orientada a servicios (SOA). En ste, los clientes de un servicio web de estilo RPC envan un sobre con datos como informacin de mtodos y argumentos al servidor, sobre HTTP. El servidor abre el sobre y ejecuta los mtodos nombrados con los argumentos transmitidos. Los resultados del mtodo se renen en un sobre y se devuelven al cliente como respuesta. El cliente recibe la respuesta y abre el sobre. Todo objeto tiene sus propios mtodos, que le son nicos, y el servicio web de estilo RPC expone solamente una URI, la cual representa el nico punto final. Se ignoran la mayor parte de las caractersticas HTTP y slo se soporta el mtodo POST. El enfoque RESTful de los servicios web surge como una alternativa popular por su naturaleza liviana y a la capacidad de transmitir datos directamente sobre HTTP. Los clientes se implementan usando una gran variedad de lenguajes como programas Java, Perl, Ruby, Python, PHP y Javascript (inclusive Ajax). Generalmente se acede a los servicios web RESTful a travs de un cliente automatizado o una aplicacin que acta en representacin del usuario. Sin embargo, la simplicidad de estos servicios posibilita la interaccin humana directa pudindose construir una URL GET con el navegador Web y leer el contenido devuelto. En un servicio web de estilo REST, cada recurso tiene una direccin. Los recursos en s son los objetivos de las llamadas de los mtodos y todos los recursos comparten una misma lista de mtodos. Los mtodos son estndar; se soportan los mtodos Facultad de Tecnologa ISIL 4

TALLER DE INTEGRACION DE APLICACIONES

HTTP GET, POST, PUT, DELETE, y, pueden soportarse los mtodos HEADER y OPTIONS. En una arquitectura de estilo RPC, el foco se establece en los mtodos, mientras que, en la arquitectura de estilo REST, el foco est dado en los recursos, informacin que se recupera como representacin y se manipula usando mtodos estndar. Las representaciones de los recursos se interconectan mediante hipervnculos que se ubican dentro de la representacin. Leonard Richardson y Sam Ruby introducen el trmino "arquitectura hbrida RESTRPC" en su libro RESTful Web Services. En lugar de usar sobres para contener al mtodo, los argumentos y los datos; los servicios hbridos REST-RPC transmiten los datos directamente sobre HTTP, asemejndose en este punto al estilo REST. Sin embargo, los servicios hbridos no usan mtodos HTTP estndar para realizar operaciones en los recursos, sino que s almacenan la informacin de mtodos en la porcin URI de la solicitud HTTP. Muchos servicios web conocidos como la API de Yahoo y la API de del.icio.us usan esta arquitectura hbrida. 1.4 Frameworks Java para servicios web RESTful

Han surgido dos frameworks Java que ayudan a construir servicios web RESTful. Restlet (ver la seccin Recursos), por Jerome Louvel y Dave Pawson es liviano e implementa conceptos como recursos, representacin, conector y tipo de medio para todo tipo de sistemas RESTful, inclusive servicios web. En el framework Restlet, tanto el cliente como el servidor son componentes. Los componentes se comunican entre s a travs de conectores. Las principales clases de este marco son la clase abstracta Uniform y su subclase concreta, Restlet, cuyas subclases son clases especializadas, entre ellas: Application, Filter, Finder, Router, and Route. Estas subclases trabajan juntas en la gestin de la autenticacin, el filtrado, la seguridad, la transformacin de datos y el enrutamiento de las solicitudes entrantes a sus respectivos recursos. La clase Resource genera la presentacin para el cliente. La JSR-311 (ver la seccin de Recursos) es una especificacin de Sun Microsystems que define un conjunto de APIs Java para el desarrollo de servicios web RESTful. La implementacin de referencia de JSR-311 se denomina Jersey (ver la seccin de Recursos). La JSR-311 proporciona una serie de anotaciones con clases asociadas e interfaces que pueden usarse para exponer objetos Java como recursos Web. La especificacin supone que el protocolo de redes subyacente es HTTP. En esta se brindan mapeos claros entre la URI y sus correspondientes clases de recursos, as como tambin mapeos de mtodos HTTP con los mtodos de los objetos Java, mediante el uso de anotaciones. La API soporta una amplia gama de tipos de contenidos de entidad HTTP como HTML, XML, JSON, GIF y JPG, entre otros. Tambin se proporciona la capacidad de complementacin que permite la inclusin de otros tipos de contenidos en aplicaciones de manera estndar.

Facultad de Tecnologa ISIL

TALLER DE INTEGRACION DE APLICACIONES

1.5

Arquitectura multinivel para la construccin de servicios web RESTful

Los servicios web RESTful y las aplicaciones Web dinmicas se asemejan en muchos aspectos. Suelen proporcionar datos y funciones iguales o muy similares, aunque lo hacen para distintos tipos de clientes. Por ejemplo, un sitio Web de un catlogo de comercio electrnico en lnea proporciona una interfaz de navegador para que los usuarios puedan buscar y ver productos para luego pedirlos. Sera til que este sitio tambin brindase servicios web para que las empresas, los minoristas y hasta los particulares pudieran realizar pedidos de manera automtica. Los servicios web pueden beneficiarse con la separacin de responsabilidades inherente a la arquitectura multinivel de la misma manera que lo hacen las aplicaciones Web ms dinmicas. Los datos y la lgica de negocios pueden compartirse entre clientes tanto automatizados como GUI. Las nicas diferencias estarn dadas en la naturaleza del cliente y la capa Presentation (presentacin) del nivel medio. Adems, la separacin entre la lgica de negocios y el acceso a los datos posibilita la independencia de las bases de datos y proporciona la capacidad de complementacin que permite el uso de diversos tipos de almacenamiento de datos La Figura 1 muestra los denominados clientes automatizados: Java; scripts de distintos lenguajes como Python, Perl, Ruby, PHP; y herramientas de la lnea de comandos como Curl. Tambin pertenecen a este grupo los Ajax, Flash, JavaFX, GWT, blogs y wikis que se ejecutan dentro del navegador y actan como consumidores del servicio web RESTful, debido a que lo hacen de manera automatizada y en representacin del usuario. Los clientes de servicios web envan solicitudes HTTP al Resource Request Handler en el nivel Web. Las solicitudes sin estado de los clientes contienen la informacin de mtodos en el encabezamiento, a saber: POST, GET, PUT y DELETE y se mapearn hacia las operaciones correspondientes de los recursos que se encuentran en el Resource Request Handler. Cada solicitud contiene toda la informacin necesaria, incluso las credenciales que permiten al Resource Request Handler procesar la solicitud.

Facultad de Tecnologa ISIL

TALLER DE INTEGRACION DE APLICACIONES

Figura 1. Diagrama de un entorno de aplicacin Web de varios niveles

Cuando recibe una solicitud de un cliente de servicio web, el Resource Request Handler solicita el servicio a la capa Business Logic (lgica de negocios). El Resource Request Handler identifica todas las entidades conceptuales que el sistema expone como recursos y asigna una nica URI a cada una de ellas. Sin embargo, las identidades conceptuales no existen en esta capa, sino que se encuentran en la capa Business Logic. El Resource Request Handler puede implementarse usando Jersey u otro framework como Restlet. El Resource Request Handler deber ser liviano y delegar el trabajo pesado principalmente al nivel de negocios. Ajax y los servicios web RESTful se ajustan naturalmente el uno al otro. Ambos aprovechan las tecnologas Web de fcil disponibilidad y los estndares como HTML, JavaScript, objetos de navegador, XML/JSON y HTTP. Por consiguiente, no hay absolutamente ninguna necesidad de comprar, instalar o configurar ningn otro componente de importancia para lograr una interaccin efectiva entre los front-end de Ajax y los servicios web RESTful. Los servicios web RESTful proporcionan a Ajax una API muy sencilla para gestionar las interacciones con los recursos en el servidor. El cliente del navegador Web de la Figura 1 acta como un front-end GUI al brindar funciones de visualizacin usando HTML generado por el Browser Request Handler en la capa Presentation. El Browser Requester Handler puede implementarse Facultad de Tecnologa ISIL 7

TALLER DE INTEGRACION DE APLICACIONES

usando modelos MVC (algunos ejemplos Java son: JSF, Struts o Spring). ste acepta la solicitud del navegador, solicita el servicio a la capa Business Logic, genera la presentacin y le responde al navegador. La presentacin debe mostrarse al usuario mediante el navegador y no contendr nicamente el contenido, sino tambin los atributos de visualizacin como HTML y CSS. Las reglas de negocios se centralizan en la capa Business Logic, la cual cumple la funcin de intermediario en el intercambio de datos entre la capa Presentation y la capa Data Access. Los datos se proporcionan a la capa Presentation como objetos de dominio u objetos de valor. Desacoplar el Browser Request Handler y el Resource Request Handler de la capa Business Logic ayuda a facilitar la reutilizacin de cdigos y conlleva a una arquitectura flexible y extensible. Adems, a medida que van surgiendo nuevos frameworks REST y MVC, se simplifica cada vez ms la implementacin sin que sea necesario reescribir la capa Business Logic. La capa Data Access brinda el nivel de almacenamiento de datos a la interfaz y puede implementarse usando el patrn de diseo DAO o bien soluciones de mapeo relacional de objetos como Hibernate, OJB o iBATIS. Otra alternativa es implementar los componentes de la capa Business y la capa Data Access como componentes EJB con soporte de un contenedor EJB que facilite el ciclo de vida de los componentes y gestione la persistencia, las transacciones y las asignaciones de recursos. Sin embargo, esta opcin requiere de un servidor de aplicaciones conforme a Java EE como, por ejemplo, JBoss y no funcionara con Tomcat. La gran ventaja de esta capa est dada en la separacin del cdigo de acceso a datos de la lgica de negocios la cual permite el uso de tecnologas de almacenamiento de datos dispares. La capa Data Access tambin puede actuar como un punto de integracin para la vinculacin con otros sistemas, incluso en casos de clientes de otros servicios web. El nivel de almacenamiento de datos abarca sistemas de bases de datos, servidores LDAP, sistemas de archivos y sistemas de informacin empresarial como sistemas legado, sistemas de procesamiento de transacciones y sistemas de planificacin de recursos empresariales. Al usar esta arquitectura, usted comenzar a darse cuenta de la potencia del servicio web RESTful, que cuenta con la flexibilidad para ser una API unificada de todo tipo de almacenamiento de datos empresariales y as exponer datos separados en aplicaciones Web centradas en el usuario y scripts de informe por lotes automatizados. 1.6 Conclusin

REST describe un estilo arquitectnico de sistemas en red como, por ejemplo, aplicaciones Web. Las limitaciones REST, aplicadas como un todo, generan una arquitectura simple, escalable, eficiente, segura, confiable y extensible. Los servicios web RESTful han surgido como una alternativa prometedora distinta a los servicios basados en SOAP por su simplicidad y naturaleza liviana, adems de la capacidad de transmitir datos directamente sobre HTTP. La arquitectura multinivel tanto para servicios web como para aplicaciones Web dinmicas conlleva a la reutilizacin, simpleza, extensibilidad y a una clara separacin de las responsabilidades de los componentes. Ajax y los servicios web RESTful se ajustan

Facultad de Tecnologa ISIL

TALLER DE INTEGRACION DE APLICACIONES

naturalmente el uno al otro. Usando Ajax y los servicios web RESTful juntos, los desarrolladores logran crear interfaces de alta calidad. Este artculo antecede a un tutorial que explica cmo construir servicios web RESTful y aplicaciones Web dinmicas con la arquitectura multinivel aqu descripta. El tutorial brinda un ejemplo de la forma en que los servicios web REST, Ajax, y Spring Web Flow trabajan juntos para producir una interfaz Web de alta calidad, similar a una interfaz de escritorio. El tutorial usa Jersey, Spring, MySQL y Tomcat, y est configurado e implementado en Eclipse. Este artculo fue posible gracias al apoyo de la Fundacin Nacional de la Ciencia en parte de la investigacin, conforme al acuerdo de cooperacin firmado con la University Corporation for Atmospheric Research. El Centro Nacional de Investigacin Atmosfrica es patrocinado por la Fundacin Nacional de la Ciencia. Asimismo, quisiera agradecer a Markus Stobbs del NCAR, quien colabor con sugerencias y la edicin del artculo. 1.7

Recursos Obtenga ms informacin en Jersey. "Architectural Styles and the Design of Network-based Software Architectures" describe un marco para la comprensin de la arquitectura de software usando estilos arquitectnicos y mostrando cmo usar los estilos como gua del diseo arquitectnico de software de aplicaciones basado en redes. RESTful Web Services describe cmo aprovechar la potencia de la Web en aplicaciones programables. "Implementing RESTful Web services in Java" muestra cmo escribir servicios web RESTful en Java conformes a la especificacin JAX-RS: API Java para servicios web RESTful (JSR-311).

2 Desarrollo paso a paso


Se crea un nuevo proyecto Web,

Facultad de Tecnologa ISIL

TALLER DE INTEGRACION DE APLICACIONES

Al proyecto lo llamamos Proveedores, siguiente; Seleccionamos Servidor Glasfish y Java EE versin: Java EE 6 Web. Siguiente

Facultad de Tecnologa ISIL

10

TALLER DE INTEGRACION DE APLICACIONES

En esta oportunidad mantenemos sin seleccionar ningn framework, y presionamos terminar;

Probamos la aplicacin web generada;

Facultad de Tecnologa ISIL

11

TALLER DE INTEGRACION DE APLICACIONES

Observamos la web generada con la direccin <http://localhost:8080/Proveedores/ >;

Facultad de Tecnologa ISIL

12

TALLER DE INTEGRACION DE APLICACIONES

Creamos una nueva base de datos llamado proveedores en MySQL, y nos conectamos;

Se crea una Clase entidad, Llamamos a la clase entidad Proveedores y la creamos en la carpeta tia.entidad (mantenemos el check en persistencia)

Facultad de Tecnologa ISIL

13

TALLER DE INTEGRACION DE APLICACIONES

Creamos un datasource llamado jdbc/proveedores y lo conectamos a la base de datos de MySQL llamada proveedores;

Terminamos la creacin de la clase entidad Proveedores;

Facultad de Tecnologa ISIL

14

TALLER DE INTEGRACION DE APLICACIONES

Vemos la clase entidad creada, y nos colocamos debajo de la lnea prvate Long id; y presionamos el botn derecho

Seleccionamos insertar cdigo y luego seleccionamos agregar propiedad.

Facultad de Tecnologa ISIL

15

TALLER DE INTEGRACION DE APLICACIONES

Colocamos en nombre, Nombre, aceptamos, y luego generamos otras propiedades con nombres Apellido, email,

y obtenernos el siguiente cdigo.

Facultad de Tecnologa ISIL

16

TALLER DE INTEGRACION DE APLICACIONES

Creamos un Restful Web Services desde una clase entidad;

Seleccionamos la clase entidad Proveedores, siguiente

Facultad de Tecnologa ISIL

17

TALLER DE INTEGRACION DE APLICACIONES

Colocamos la carpeta service, dentro de tia.entidad, direccin donde se generan los archivos;

Podemos notar la creacin de las carpetas nuevas y la carpeta Restful Web Services, Enterprises Beans y otros ms;

Facultad de Tecnologa ISIL

18

TALLER DE INTEGRACION DE APLICACIONES

Hacemos las pruebas del Restful Web Services, y se presenta lo siguiente:

Seleccionamos Web Test Client in Project y seleccionamos nuestro proyecto web Proveedores ;

Facultad de Tecnologa ISIL

19

TALLER DE INTEGRACION DE APLICACIONES

En el browser se presenta lo siguiente, lo cual se corrobora que se ha realizado el RestFul Web Service.

Elaboraremos un JSF pages desde una clase entidad.

Facultad de Tecnologa ISIL

20

TALLER DE INTEGRACION DE APLICACIONES

Seleccionamos la clase entidad Proveedores y

Colocamos las carpetas del package Session Bean en org.netbeans.rest.application.config.facade y JSF Clases en org.netbeans.rest.application.config.presentacion

Facultad de Tecnologa ISIL

21

TALLER DE INTEGRACION DE APLICACIONES

Mantenemos los valores predeterminados; y terminamos

y se genera el cdigo necesario;, luego deployamos el proyecto y luego ejecutamos el proyecto y se obtiene:

Facultad de Tecnologa ISIL

22

TALLER DE INTEGRACION DE APLICACIONES

Ingresamos un nuevo Proveedor y tenemos

Ingfresamos los proveedores y tenemos los siguiente:

Pasamos a la hoja de prueba del Restful web Service y vemos lo que se obtiene con informacin ingresada:

Facultad de Tecnologa ISIL

23

TALLER DE INTEGRACION DE APLICACIONES

Podemos observar que se obtienen los valores ingresados en XML, en este caso se obtiene el valos del 2 file. Con ello se ha desarrollado paso a paso la secuencia de hacer un proyecto Web, utilizando RestFul Web service.

Facultad de Tecnologa ISIL

24

También podría gustarte