taller spring flex
TRANSCRIPT
Taller de Spring 3, BlazeDS 4 y Flex 4
Iván Álvarez (@ivanhoe)Erick Camacho (@ecamacho)
Wednesday, October 6, 2010
Agenda
• Instalación del ambiente
• La aplicación
• Introducción a Spring
• Introducción a Flex
• Introducción a DataServices
• Comunicación Spring + Flex
• Preguntas
Wednesday, October 6, 2010
Instalación del ambiente
• Eclipse -> Descomprimir
• Flash builder plugin -> Instalar
• Repositorio local maven
• Ejecutar script de ambiente:
Mac OS/X / Linux -> shell> . ./ambiente.sh
Windows -> command> ambiente.bat
Wednesday, October 6, 2010
Instalación del ambiente
Existen 2 proyectos Maven:
• twitterds-solucion
• twitterds-lab
en ambos: mvn eclipse:eclipse
Cargar proyectos en Eclipse
Wednesday, October 6, 2010
La aplicación
Cliente de Twitter
• Backend Java + Spring
• Frontend Adobe Flex
Wednesday, October 6, 2010
• Contenedor IoC (Inversión de Control) usando Inyección de Dependencias.
JVM
Wednesday, October 6, 2010
• Contenedor IoC (Inversión de Control) usando Inyección de Dependencias.
JVM
Application Context
Wednesday, October 6, 2010
• Contenedor IoC (Inversión de Control) usando Inyección de Dependencias.
JVM
Application Context
Bean A
Wednesday, October 6, 2010
• Contenedor IoC (Inversión de Control) usando Inyección de Dependencias.
JVM
Application Context
Bean A Bean B
Wednesday, October 6, 2010
• Contenedor IoC (Inversión de Control) usando Inyección de Dependencias.
JVM
Application Context
Bean A Bean B
Bean C
Wednesday, October 6, 2010
• Contenedor IoC (Inversión de Control) usando Inyección de Dependencias.
JVM
Application Context
Bean A Bean B
Bean C
Wednesday, October 6, 2010
• Contenedor IoC (Inversión de Control) usando Inyección de Dependencias.
JVM
Application Context
Bean A Bean B
Bean C
Wednesday, October 6, 2010
• Spring se encarga de crear los objetos e inyectar sus dependencias.
• Los objetos son creados en el orden correcto basados en sus dependencias
Wednesday, October 6, 2010
• Spring se encarga de crear los objetos e inyectar sus dependencias.
• Los objetos son creados en el orden correcto basados en sus dependencias
Bean C
Wednesday, October 6, 2010
• Spring se encarga de crear los objetos e inyectar sus dependencias.
• Los objetos son creados en el orden correcto basados en sus dependencias
Bean B
Bean C
Wednesday, October 6, 2010
• Spring se encarga de crear los objetos e inyectar sus dependencias.
• Los objetos son creados en el orden correcto basados en sus dependencias
Bean B
Bean C
Wednesday, October 6, 2010
• Spring se encarga de crear los objetos e inyectar sus dependencias.
• Los objetos son creados en el orden correcto basados en sus dependencias
Bean A Bean B
Bean C
Wednesday, October 6, 2010
• Spring se encarga de crear los objetos e inyectar sus dependencias.
• Los objetos son creados en el orden correcto basados en sus dependencias
Bean A Bean B
Bean C
Wednesday, October 6, 2010
La inyección se realiza vía constructor:
• BeanC beanC = new BeanC();
• BeanB beanB = new BeanB( beanC );
O vía Setter:
• BeanC beanc = new BeanC();
• BeanB beanB = new BeanB( );
• beanB.setBeanC( beanC );
Wednesday, October 6, 2010
Application Context:
• Definición de Beans y sus dependencias
• Beans de infraestructura
• Definido en uno o más archivos .xml
Wednesday, October 6, 2010
Application Context:
• Instanciado mediante: new ClassPathXmlApplicationContext()
• Cargado mediante un Servlet Listener
• En Pruebas JUnit usando un Runner de Spring.
Wednesday, October 6, 2010
LABORATORIO 1:
1. Completar el código de TwitterSendMessageServiceImpl.
2. Cargar el servicio como un Spring Bean (services.xml) y descomenta la declaración de JMS en jms-config.xml
3. Completar la prueba de integración y ejecutarla
Wednesday, October 6, 2010
LABORATORIO 1:
4. Comprueba que todo funcione:
mvn install -o
5. Levanta jetty:
mvn jetty:run -o
6. Aplicación en
http://localhost:9090/twitterds-lab-webapp
Wednesday, October 6, 2010
Wednesday, October 6, 2010
Wednesday, October 6, 2010
Wednesday, October 6, 2010
Wednesday, October 6, 2010
Flash Builder
Wednesday, October 6, 2010
LABORATORIO
Wednesday, October 6, 2010
¿Flex + Java?Cliente FLEX
JEE Backend
SOAP WebServices
HTTP WebServices
AMF RemoteServices
Página HTML
JavaScript Bridge
Wednesday, October 6, 2010
¿AMF ?• ActionScript Message Format
• Flash Player 6: AMF 0
• Flash Player 9: AMF 3
• Especificación abierta desde 2007
Wednesday, October 6, 2010
¿Por qué AMF?
• http://www.jamesward.com/census/
Wednesday, October 6, 2010
AMF Remote Services
Wednesday, October 6, 2010
Java Players
• Adobe LiveCycle ES -> $$
• Adobe BlazeDS -> opensource
• GraniteDS -> opensource
Wednesday, October 6, 2010
Wednesday, October 6, 2010
• Spring Factory: Un adapter más
• Spring BlazeDS: Integra el Message Broker Servlet de BlazeDS a Spring.
+
Wednesday, October 6, 2010
+
• Configuración en un application context vía el namespace flex
• Configuración de servicios mediante anotaciones
• Integración con Spring Security
• Integración con JMS
Wednesday, October 6, 2010
+
Application Context
Bean A Bean B
Bean C
JVM
Wednesday, October 6, 2010
+
Application Context
Bean A Bean B
Bean C
BlazeDSJVM
Wednesday, October 6, 2010
+
Application Context
Bean A Bean B
Bean C
BlazeDSJVM
Wednesday, October 6, 2010
+
Application Context
Bean A Bean B
Bean C
BlazeDSJVM
Wednesday, October 6, 2010
+
Application Context
Bean A Bean B
Bean C
BlazeDSJVM
Wednesday, October 6, 2010
+
Laboratorio Spring BlazeDS
•Abrir web.xml, agregar configuración.•Agregar anotaciones a Servicios•Levantar aplicación web•Probar con jconsole
Wednesday, October 6, 2010
+
Laboratorio Flex: Consumir servicios BlazeDS
Wednesday, October 6, 2010
• BlazeDS: http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/
• Spring BlazeDS: http://www.springsource.org/spring-flex
• RIAHispano: http://www.riahispano.org
• LiveData UG Mexico http://groups.adobe.com/groups/f2f48b1925/summary
• Jeremy Grelle: @jeremyg484
• http://flexblog.faratasystems.com/2006/11/12/comparing-the-syntax-of-java-5-and-actionscript-3
Links
Wednesday, October 6, 2010
¿?
Preguntas
Wednesday, October 6, 2010