Crear proyectos con FlexBuilder3, BlazeDS y Guasax
Hola a todos. Tengo el gran honor de iniciar el blog de profesionales de Master D, y como me voy a dedicar a escribir post sobre temas de Flex, que mejor que empezar explicando como crear proyectos con FlexBuilder 3 y BlazeDS. Además voy a enseñar como empezar a utilizar un Framework muy útil de programación en Flex, que no todos conocen, y que es de una grandísima utilidad. Estoy hablando de Guasax.
El primer paso de todos es crear el proyecto (nota: La versión de FlexBuilder es la 3, instalada com plug-in de eclipse). Para ello nos iremos a File -> New -> FlexProject:
Se nos abrirá el cuadro de diálogo para crear nuevos proyectos. Dentro de él, asignaremos un nombre a nuestro proyecto, la ruta donde va a estar alojado, si queremos que sea una aplicación Flex o AIR (en nuestro caso Flex) y el tipo de tecnología de servidor que queremos. Para trabajar con proyectos flex que trabajen sobre un tomcat, le daremos a la opción J2EE y marcaremos el resto de opciones como aparecen en la imagen:
Una vez le demos a Next, pasaremos al siguiente paso de la creación. Ahora tendremos que especificar el servidor sobre el cual queremos que corra nuestra aplicación. Si no tenemos ninguno creado, pulsaremos sobre new y crearemos una instancia de un servidor Tomcat que tengamos instalado en nuestro equipo. Especificaremos también el contexto de nuestra aplicación, el content folder (dejaremos el que viene por defecto) y la ruta donde está nuestro archivo blazeds.war.
Finalmente elegiremos el nombre que queremos que tenga el fichero principal de nuestra aplicación. El resto de opciones las dejaremos por defecto:
Una vez pulsemos sobre finish, nuestro proyecto se ha tenido que crear con normalidad. Una vez que tengamos el proyecto creado, nos iremos a opciones y dentro de FlexServer, cambiaremos la cadena que viene en ContextRoot. Por defecto viene WebContent, pero esto está mal, tendremos que cambiar WebContent por el contexto que le hayamos dado a nuestra apliación:
Ahora el siguiente paso es hacer el recorrido de una llamada Guasax. Lo primero de todo es descargase la librería de Guasax y añadirla a las librerías de nuestro proyecto. Una vez esté disponible, debermos crear los siguientes ficheros dentro de la parte flex-src:
guasax-conf.xml: Dentro de este fichero nos vamos a definir las acciones a realizar dentro de nuestra aplicación. Vamos a indicarle a Guasax cuáles son nuestras clases que van a llamar a las clases java que tenemos en nuestro servidor y con qué métodos. Tiene la siguiente sintaxis:
Services.mxml: En este fichero vamos a declarar los objetos remotos que tenemos en nuestro servidor. La raíz de este fichero es el ServiceLocator que va a ser el encargado de almacenar toda esta esta información referida a servicios en el servidor. Tiene la siguiente estructura:
Objetos Business Objects (BOs): Estas son las clases que hemos definido en el guasax-conf.xml que van a ser las encargadas de realizar las llamadas remotas a nuestro servidor a través del ServiceLocator. Cada llamada tendrá un método para la llamada en caso de éxito y otro método en caso de error. Los parámetros los pasaremos como un Array. Las llamadas las realizaremos de la siguiente manera:
public class TestBO{ public function TestBO(){ } public function testAction(mensaje:String):void{ ServiceLocator.getInstance().executeService(AppConstants.TEST_SERVICE, AppConstants.TEST_ACTION, [mensaje], testActionOnResult, testActionOnFault, this); } public function testActionOnResult(event:ResultEvent):void{ var resultado:String = event.result as String; Alert.show(resultado); } public function testActionOnFault(event:FaultEvent):void{ Alert.show(event.message.toString()); } }
Ahora, tenemos que hacer que al arrancar la aplicación, se inicialice toda esta información en la memoria. Para ello, en nuestro fichero principal de la aplicación pondremos la etiqueta Services para instanciar el ServiceLocator, realizaremos el parseo del guasax-conf.xml para que se carguen las acciones y haremos una instancia de nuestros Business Objects para que se inicialicen. Todo esto lo podemos hacer de la siguiente manera:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:services="es.masterd.internet.samples.guasaxprojectsample.services.*" creationComplete="creationComplete()"> <mx:Script> <![CDATA[ import es.masterd.internet.samples.guasaxprojectsample.bo.TestBO; import conf.AppConstants; import es.guasax.container.GuasaxContainer; private function creationComplete():void{ /* declaracion de los BO que vamos a instanciar en guasax */ var classForCompile:Array = [TestBO]; GuasaxContainer.getInstance().parseConfFile("/SampleProject/conf/guasax-conf.xml", onLoadComplete); } //Funcion que se llama cuando se ha terminado de cargar la configuracion del guasax private function onLoadComplete(event:Event) : void { //TODO } ]]> </mx:Script> <services:Services id="services" /> </mx:Application>
Ahora en la parte del servidor, tenemos que dar de alta las llamadas remotas y las clases Java que van a realizar toda la lógica de computación. Primero vamos a dar de alta las llamadas remotas añadiendo un tag como el siguiente por cada llamada dentro del remoting-config.xml (Dentro de WebContet/WEB-INF/flex):
<destination id="TestRO"> <properties> <scope>session</scope> <source>es.masterd.internet.samples.guasaxprojectsample.remoteobjects.TestRO</source> </properties> </destination>
Estos tags, hacen referencia a una clase Java. Esta clase realizará las operaciones que sean necesarias (accesos a base de datos, etc.) y nos devolverán un valor que serán recogidos por nuestra aplicación Flex. Por ejemplo:
package es.masterd.internet.samples.guasaxprojectsample.remoteobjects; public class TestRO { public String testAction(String mensaje){ return "Mensaje recibido en el Remote Object: " + mensaje; } }
Como todo esto se ve mucho mejor con un proyecto ya armado. Podéis descargaros el siguiente ejemplo de proyecto básico Guasax, y a partir de aquí ir tirando.
Saludos!!





December 31st, 2008 at 12:44 am
hola amigo, podrias explicar como hacer para poder instalar el tomcat???
desde ya gracias.
saludos