Taller de Spring 3, BlazeDS 4 y
            Flex 4


          Iván Álvarez (@ivanhoe)
       Erick Camacho (@ecamacho)
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
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
Instalación del
            ambiente
  Existen 2 proyectos Maven:
• twitterds-solucion
• twitterds-lab
  en ambos: mvn eclipse:eclipse
  Cargar proyectos en Eclipse
La aplicación

  Cliente de Twitter
• Backend Java + Spring
• Frontend Adobe Flex
• Contenedor IoC (Inversión de Control)
  usando Inyección de Dependencias.
       JVM
• Contenedor IoC (Inversión de Control)
  usando Inyección de Dependencias.
       JVM




                  Application
                   Context
• Contenedor IoC (Inversión de Control)
  usando Inyección de Dependencias.
       JVM
            Bean A



                     Application
                      Context
• Contenedor IoC (Inversión de Control)
  usando Inyección de Dependencias.
       JVM
            Bean A     Bean B



                     Application
                      Context
• Contenedor IoC (Inversión de Control)
  usando Inyección de Dependencias.
       JVM
            Bean A     Bean B

                Bean C
                     Application
                      Context
• Contenedor IoC (Inversión de Control)
  usando Inyección de Dependencias.
       JVM
            Bean A     Bean B

                Bean C
                     Application
                      Context
• Contenedor IoC (Inversión de Control)
  usando Inyección de Dependencias.
       JVM
            Bean A     Bean B

                Bean C
                     Application
                      Context
• Spring se encarga de crear los objetos e
  inyectar sus dependencias.
• Los objetos son creados en el orden
  correcto basados en sus dependencias
• 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
• 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
• 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
• 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
• 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
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 );
Application Context:
• Definición de Beans y sus dependencias
• Beans de infraestructura
• Definido en uno o más archivos .xml
Application Context:
• Instanciado mediante: new
  ClassPathXmlApplicationContext()
• Cargado mediante un Servlet Listener
• En Pruebas JUnit usando un Runner de
  Spring.
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
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
Flash Builder
LABORATORIO
¿Flex + Java?
                            Cliente FLEX




  SOAP          HTTP                AMF
WebServices   WebServices       RemoteServices   JavaScript Bridge




              JEE Backend                          Página HTML
¿AMF ?
• ActionScript Message Format
• Flash Player 6: AMF 0
• Flash Player 9: AMF 3
• Especificación abierta desde 2007
¿Por qué AMF?




•   http://www.jamesward.com/census/
AMF Remote Services
Java Players


• Adobe LiveCycle ES -> $$
• Adobe BlazeDS -> opensource
• GraniteDS -> opensource
+



• Spring Factory: Un adapter más
• Spring BlazeDS: Integra el Message Broker
  Servlet de BlazeDS a Spring.
+

• 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
+


JVM

      Bean A     Bean B

           Bean C
               Application
                Context
+


JVM
          BlazeDS
      Bean A     Bean B

           Bean C
               Application
                Context
+


JVM
          BlazeDS
      Bean A     Bean B

           Bean C
               Application
                Context
+


JVM
          BlazeDS
      Bean A     Bean B

           Bean C
               Application
                Context
+


JVM
          BlazeDS
      Bean A     Bean B

           Bean C
               Application
                Context
+
     Laboratorio Spring BlazeDS

•Abrir web.xml, agregar configuración.
•Agregar anotaciones a Servicios
•Levantar aplicación web
•Probar con jconsole
+


Laboratorio Flex: Consumir servicios BlazeDS
Links
•   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
Preguntas




    ¿?

SpringBlazeDS

  • 1.
    Taller de Spring3, BlazeDS 4 y Flex 4 Iván Álvarez (@ivanhoe) Erick Camacho (@ecamacho)
  • 2.
    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
  • 3.
    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
  • 4.
    Instalación del ambiente Existen 2 proyectos Maven: • twitterds-solucion • twitterds-lab en ambos: mvn eclipse:eclipse Cargar proyectos en Eclipse
  • 5.
    La aplicación Cliente de Twitter • Backend Java + Spring • Frontend Adobe Flex
  • 6.
    • Contenedor IoC(Inversión de Control) usando Inyección de Dependencias. JVM
  • 7.
    • Contenedor IoC(Inversión de Control) usando Inyección de Dependencias. JVM Application Context
  • 8.
    • Contenedor IoC(Inversión de Control) usando Inyección de Dependencias. JVM Bean A Application Context
  • 9.
    • Contenedor IoC(Inversión de Control) usando Inyección de Dependencias. JVM Bean A Bean B Application Context
  • 10.
    • Contenedor IoC(Inversión de Control) usando Inyección de Dependencias. JVM Bean A Bean B Bean C Application Context
  • 11.
    • Contenedor IoC(Inversión de Control) usando Inyección de Dependencias. JVM Bean A Bean B Bean C Application Context
  • 12.
    • Contenedor IoC(Inversión de Control) usando Inyección de Dependencias. JVM Bean A Bean B Bean C Application Context
  • 13.
    • Spring seencarga de crear los objetos e inyectar sus dependencias. • Los objetos son creados en el orden correcto basados en sus dependencias
  • 14.
    • Spring seencarga de crear los objetos e inyectar sus dependencias. • Los objetos son creados en el orden correcto basados en sus dependencias Bean C
  • 15.
    • Spring seencarga de crear los objetos e inyectar sus dependencias. • Los objetos son creados en el orden correcto basados en sus dependencias Bean B Bean C
  • 16.
    • Spring seencarga de crear los objetos e inyectar sus dependencias. • Los objetos son creados en el orden correcto basados en sus dependencias Bean B Bean C
  • 17.
    • Spring seencarga 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
  • 18.
    • Spring seencarga 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
  • 19.
    La inyección serealiza 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 );
  • 20.
    Application Context: • Definiciónde Beans y sus dependencias • Beans de infraestructura • Definido en uno o más archivos .xml
  • 21.
    Application Context: • Instanciadomediante: new ClassPathXmlApplicationContext() • Cargado mediante un Servlet Listener • En Pruebas JUnit usando un Runner de Spring.
  • 22.
    LABORATORIO 1: 1. Completarel 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
  • 23.
    LABORATORIO 1: 4. Compruebaque todo funcione: mvn install -o 5. Levanta jetty: mvn jetty:run -o 6. Aplicación en http://localhost:9090/twitterds-lab-webapp
  • 28.
  • 29.
  • 30.
    ¿Flex + Java? Cliente FLEX SOAP HTTP AMF WebServices WebServices RemoteServices JavaScript Bridge JEE Backend Página HTML
  • 31.
    ¿AMF ? • ActionScriptMessage Format • Flash Player 6: AMF 0 • Flash Player 9: AMF 3 • Especificación abierta desde 2007
  • 32.
    ¿Por qué AMF? • http://www.jamesward.com/census/
  • 33.
  • 34.
    Java Players • AdobeLiveCycle ES -> $$ • Adobe BlazeDS -> opensource • GraniteDS -> opensource
  • 36.
    + • Spring Factory:Un adapter más • Spring BlazeDS: Integra el Message Broker Servlet de BlazeDS a Spring.
  • 37.
    + • Configuración enun application context vía el namespace flex • Configuración de servicios mediante anotaciones • Integración con Spring Security • Integración con JMS
  • 38.
    + JVM Bean A Bean B Bean C Application Context
  • 39.
    + JVM BlazeDS Bean A Bean B Bean C Application Context
  • 40.
    + JVM BlazeDS Bean A Bean B Bean C Application Context
  • 41.
    + JVM BlazeDS Bean A Bean B Bean C Application Context
  • 42.
    + JVM BlazeDS Bean A Bean B Bean C Application Context
  • 43.
    + Laboratorio Spring BlazeDS •Abrir web.xml, agregar configuración. •Agregar anotaciones a Servicios •Levantar aplicación web •Probar con jconsole
  • 44.
  • 45.
    Links • 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
  • 46.

Notas del editor

  • #19 Abrir archivo services-config.xml
  • #20 Abrir archivo web.xml y pruebas unitarias