jueves, 5 de junio de 2008

Tutorial de BlazeDS – Parte 1

Hace poco vimos en una pequeña introducción a BlazeDS en el JUG DAY, pero como el tiempo es corto, es muy difícil poder explicar todas las ventajas que este “Data Services” nos ofrece. Por esta razón, comenzare a explicar en una serie de post cuales son las partes que componen BlazeDS a través de pequeños ejemplos.
BlazeDS está construido como una aplicación web, cuyo corazón es una infraestructura de mensajería que permite integrar un “Back-End” desarrollado en Java con un “Front-End” en Flex. Esta infraestructura de mensajería nos permite el intercambio de datos a través de dos tipos de servicios: Mensajería y RPC (Remote Procedure Call).
Servicios RPC
Los servicios RPC están diseñados para aplicaciones en la cuales el modelo “Llamada / Respuesta” es una buena opción para acceder a datos externos. Este servicio permite hacer llamadas asincrónicas a un servicio remoto que procesara esta solicitud y retornara el resultado a la aplicación Flex.
Un componente RPC que reside en el cliente, puede ser creado con MXML o ActionScript. Este es el encargado de hacer la llamada remota al servicio y almacenar los datos de respuesta del servicio en un objeto ActionScript, desde el cual la aplicación pueda obtener los datos fácilmente. La implementación de un servicio RPC puede ser un HTTP URL, el cual usara http POST o GET; un servicio web SOAP compatible o un objeto Java en una aplicación web Java. Los componentes RPC que residen en el cliente pueden ser del tipo: HTTPService, WebService y RemoteObject.
El siguiente diagrama provee una visión de cómo los componentes RPC interactúan con servicios RPC.
Mensajeria
La capacidad de mensajería en BlazeDS está construida sobre la misma infraestructura de mensajería de los servicios RPC. Utilizando un componente de mensajería se puede desarrollar aplicaciones colaborativas y en tiempo real. Estos componentes proveen una API a las aplicaciones cliente para enviar texto y objetos dentro de un mensaje, permitiendo configurar el destino de este en un archivo de configuración que reside en el servidor de aplicaciones.
Es posible crear un componente de mensajería a través de MXML o ActionScript, el cual define el destino de los mensajes a enviar al servidor, envía los mensajes a estos destinos y recibe mensajes de otros clientes de mensajería. Los componentes que envían mensajes son llamados “Producidores”, y los que reciben mensajes son llamados “Consumidores”. Los mensajes enviados son transportados a través de “Canales”, los cuales utilizan un protocolo de transporte especifico, como por ejemplo el Action Message Format (AMF).
Los clientes de mensajería pueden ser una aplicación Flex u otro tipo de aplicaciones, como por ejemplo una aplicación JMS. JMS es una API en Java que permite desarrollar aplicación para crear, enviar, recibir y leer mensajes. Las aplicaciones JMS pueden publicar y suscribirse al mismo destino de mensajería que las aplicaciones Flex. Sin embargo, se puede crear una variedad de aplicaciones de mensajería solo utilizando el servicio de mensajería de BlazeDS.
Instalación
BlazeDS puede ser descargado desde http://opensource.adobe.com/wiki/display/blazeds/BlazeDS, existiendo la opción de descargar el código fuente del proyecto, la opción binaria (la cual contiene un archivo WAR) y la opción “Turnkey”, la cual es una versión lista para utilizar, ya que incluye un Tomcat 6.0.14, un archivo WAR y el SDK de Flex 3.0. Para efectos de los ejemplos a desarrollar a lo largo de los post, necesitaremos descarga la versión “Turnkey”.
Una vez descargado el archivo, descomprímanlo en la carpeta “C:\blazeds_turnkey”, el cual contendrá la siguiente estructura:
Para validar que todo funciona correctamente, ejecuten el archivo “startup.bat” que se encuentra en la carpeta “C:\blazeds_turnkey\tomcat\bin” (es necesario tener correctamente configurada la variable de entorno JAVA_HOME).
Una vez que Tomcat se encuentre listo, podrán acceder a la página de administración de BlazeDS en http://localhost:8400/ds-console/index.html.
Creación de un proyecto
Tenemos dos opciones de crear un proyecto Flex integrado a BlazeDS. La primera opción es dejar ambos códigos fuentes integrados en un solo proyecto, o en caso contrario, construir dos proyectos por separado.
Proyecto integrado
El primer paso será crear un proyecto Flex que llamaremos “DukeFlex”, seleccionaremos que el tipo de servidor de aplicaciones es “J2EE”, y por último la opción de creación de un proyecto Java/Flex usando WPT.

Seguidamente deberemos definir el servidor de aplicaciones (para este ejemplo utilizare Tomcat 6.x), indicarle donde se encuentra el archivo WAR de BlazeDS, en la opción “Output Folder” borrar el texto “bin-debug” y presionar el botón “Finish”.


Ahora crearemos una clase Java que retorne el mensaje “Duke Chile - JUG”, para lo cual deberán cambiar la perspectiva de “Flex” a “Java”.






Una vez creada la clase Java, necesitaremos registrarla como destino en el archivo remoting-config.xml.



Una vez que tenemos configurado el servicio, el siguiente paso será crear una pequeña página en Flex que llame al método “mensaje”, obtenga el texto del servicio y lo muestre en una ventana de mensajes.

Para esto, volveremos a la perspectiva “Flex” y abriremos el archivo DukeFlex.mxml que está en la carpeta “flex_src” del proyecto.



Dentro de este archivo deberemos crear un objeto “RemoteObject” y definirle el “destination” con “servicioDukeChile”. También deberemos construir un objeto “Button” que llame al servicio y que muestre el mensaje en una ventana de “Alerta”.



Por último, deberemos realizar un cambio en el “Context Root” del proyecto, cambiando la definición de “WebContent” por “DukeFlex” que es el nombre del proyecto. Para esto deberán presionar el botón derecho del mouse sobre la carpeta del proyecto y seleccionar la opción “Properties”. Dentro de la ventana de propiedades seleccionar la opción “Flex Server” y realizar el cambio.




Por último, botón derecho sobre el archivo “DukeFlex.mxml” y seleccionar la opción “Run as --> Flex Application”, con lo cual se iniciara Tomcat y mostrara la página Flex con el botón de prueba.




Al presionar el botón “Llamar servicio”, se llamará al método “mensaje”.


Proyectos separados

Lo primero que tendremos que hacer es crear la carpeta “dukechile” en “C:\blazeds_turnkey\tomcat\webapps” y dentro de esta copiar el contenido que está en la carpeta “C:\blazeds_turnkey\blazeds”. Con esto tendremos la estructura básica de un proyecto web para BlazeDS.

El siguiente paso será crear un proyecto “Java” al cual llamaremos “DukeFlexServidor”, seleccionaremos la opción “Create project from existing source”, en la opción “Directory” le indicamos la ruta completa hasta la carpeta “WEB-INF” del proyecto “dukechile” y presionamos el botón “Next”.


En la siguiente opción, deberemos definir la carpeta “src” como nuestro “source foulder”, definiremos la carpeta “classes” como el lugar donde quedaran las clases compiladas y presionamos el botón “Finish”.

El siguiente paso será crear la clase “ServicioDukeChile” igual a la detallada en “Proyecto Integrado”.



Una vez creada la clase Java, necesitaremos registrarla como destino en el archivo remoting-config.xml.



Con esto ya tendremos listo la parte del lado del servidor. Ahora construiremos la aplicación cliente para cual deberemos crear un proyecto Flex que llamaremos “DukeFlexCliente”, pero que a diferencia de la versión “Proyecto integrado”, en este caso solo seleccionaremos que el servidor de aplicación a utilizar es “J2EE”. Una vez definido esto, presionamos el botón “Next”.




En esta opción deberemos definir que el “Root folder” es la carpeta “dukechile” definida anteriormente dentro del “blazeds_turnkey”. Además deberemos modificar el “Root URL” y el “ContextRoot” como se muestra en la imagen.

Una vez que los datos son modificados, será necesario validar la nueva configuración, para lo cual presionaremos el botón “Validate Configuration”.

Por último, presionamos el botón “Finish” para crear el proyecto Flex.



En el archivo “DukeFlexCliente” construiremos el mismo ejemplo que realizamos en la opción “Proyecto integrado”.

Para probar la aplicación deberemos iniciar Tomcat, para lo cual ejecutaremos el archivo “C:\blazeds_turnkey\tomcat\bin\startup.bat”.


Por último, botón derecho sobre el archivo “DukeFlexCliente.mxml” y seleccionar la opción “Run as --> Flex Application”, con lo cual se mostrara la página Flex con el botón de prueba.


Al presionar el botón “Llamar servicio”, se llamará al método “mensaje”.


Con estos pasos ya podemos comenzar a crear nuestros primeros proyectos utilizando BlazeDS. Además, como vimos anteriormente, tenemos la posibilidad de integrar todo en un mismo proyecto, o tener por separado el proyecto Flex del Java.

En el siguiente post comenzaremos a analizar los servicios RPC, cuales son los canales definidos para este tipo de servicios, su configuración en BalzeDS y un pequeño ejemplo que involucre estos tópicos.

No hay comentarios: