enterprise rias con spring e flex - ugo...

Post on 22-Apr-2018

217 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

MARCO CASARIOCTO – Comtastehttp://casario.blogs.com

Enterprise RIAs con Spring e Flex

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Exploring new frontiers in Rich Internet Applications

Maximizing the User Experiences

Mission

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

The technologies we use:

� J2EE (Java, JSP, Hibernate, EJB3, Struts, Spring)� Ajax� Flash� Flex� AIR� Flash Media Server

Technologies

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Who can make it possible

Team

J2EE Developers Flex/Flash Developers Creative UI Designers

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Showcase

Maggioli S.p.A.è una delle più grandi realtà italiane nell'ambito della fornitura di prodotti e servizi per la PAL con particolare impegno nella produzione e assistenza di software gestionali per gli enti.

Noi per Loro

•Orientamento tecnologico•Formazione•Menthoring•User Interface Design

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

INPDAP

Noi per Loro

Sviluppo , user interface design e deploy di una piattaforma RIA per archiviazione, distribuzione e ricerca di delibere e circolari

Showcase

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Showcase

Dashboard applications

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Showcase

Comtaste Open Source Projects

Pantaste (http://code.google.com/p/pantaste/)

A library to create ActionScript-based personalized start page or personal web portal much like iGoogle, My Yahoo!, Netvibes etc

DAO-EXT (http://code.google.com/p/dao-ext/)

an Adobe AIR tool that allows developers to automatically generate ActionScript Data Access Objects (DAO) and Value Objects starting from a local SQLite database.

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

CASE HISTORIESShowcase

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Partnership

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Upcoming

Spring-Flex Training

Comtaste ha creato un percorso didattico rivolto a chi già utilizza Flex in ambiente Enterprise e

vuole esplorare le possibilità di integrazione con Spring.

Corsi Spring in Italiano

Comtaste e SpringSource stanno lavorando insieme per offrire corsi

di Spring in lingua italiana.

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

My books

WWW.COMTASTE.COM

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

My books

WWW.COMTASTE.COM

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

My books

GEN 09WWW.COMTASTE.COM

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

My Books

WWW.COMTASTE.COM

Advanced AIR Applications

Professional Flash Catalyst

Flex 4 Solutions

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Who I am

WWW.COMTASTE.COM

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

� Flash Platform Overview� Flex 4 e Flash Catalyst� Livecycle DS� BlazeDS� Integrazione con Spring� Q & A

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Flash Builder

Flash CS4 Professional

Tools to Design and Develop

Clients

Servers/Services

Framework

AMF, XML, JSON, SOAP, RSS, ATOM, etc.HTTP/S, Sockets, RTMP, etc.

Flash Catalyst

Flex

Flash Media Server Family

Flash Player

AIR

BlazeDSData Services

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex 3 è Open Source

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Dashboard con Flex

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Ecosistema Flex

Createimmersive experiences and

video content

Transformartwork into functional application

user interfaces

Developcross-platform rich Internet applications

Enabling developers and designers to collaboratively build applications and interactive content

Interaction design tool for designers to rapidly create

Flex application user interfaces without coding

IDE for software developers to rapidly build cross-platform applications using the Flex framework and interactive content using ActionScript

Authoring tool for designers and developers who want to

create free-form and immersive

interactive content

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Migrazione Flex 4

Flex frameworkAligning Flex brand with the open source

framework underlying both FB and FC

FLEX 3 GENERATION FLEX 4 GENERATION

FlashBuilder

FlashCatalys t

Flex framework, Flex Builder

Consistent branding for tools

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

ProduttivitàRapid design and development

Integrazione con Servers e ServicesQuickly and easily integrate with existing infrastructure

Applicazioni ad alta user experienceBuild more expressive applications and content

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Focus point Flex 4

Design in Mind

Developer Productivity

Framework Evolution

� Spark component model

� MXML 2009

� FXG

� Improved states, effects, and layout

� High-fidelity Text

� New Video Component

� Compiler performance

� 2-way binding

� CSS Improvements

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex 4Flex 4 Component Model (Spark)

WWW.COMTASTE.COM

ActionScript MXML

GraphicsLayoutAnimationPartsStates

Component Skin

CSS properties

BehaviorLogicData

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

FXG

FXG: grafica a compile time

After Effects Fireworks

InteractiveContent

Animation

Visual Layout

Prototyping

Design/DevelopWorkflow

Eclipse IDE

Code Profiling

Debugging

Flash CS4Professional

FlashCatalyst

FlashBuilder

Illustrator Photoshop

FXG

FXG: formato grafico basato su MXML

• Di facile comprensione per i designers

• Basato sul flash rendering model• Statico – no binding, layout, event

handlers, styling, etc• Ottimizzato dal compiler (alte

performance)

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flash Catalyst

• A professional interaction design tool for rapidly creating the user experience of applications and interactive content without coding

Flash Catalyst

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flash Catalyst

� Interactive Web Designers / Interaction Designers

� Responsible for the visual design of interactive experiences created at agencies. Uses tools like

Photoshop, Illustrator, and Fireworks to design the layout and assets - but increasingly wants

to design the “behavior” of the interface.

� Information Architects

� Responsible for creating the high-level interaction models for the media and experiences.

Involved in the early wireframes and ideation process

� Graphic Designers and Creative Directors

� Aspire to do interactive pieces or showcase sites without having to write code.

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex Applications

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Architettura

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

AMF3 Binary Data Transfer

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

LCDS

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

LCDS

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

BlazeDS

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Comparison: BlazeDS, LCDS

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

BlazeDS

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Perché Flex e Spring insieme

Spring è di fatto uno standard emergente per il business tier delle applicazioni Java Enterprise

Flex rappresenta lo standard per le RIA

Nell’integrazione lo sviluppatore non deve abbandonare l’approccio server side di Spring

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Lo sviluppatore Spring è “attratto” dall’approccio di sviluppo:

• Configurazione di differenti tecnologie• Transizione semplice tra “standard” e “enterprise”• Migrazione da Local transactions e JTA non

richiedono codice

Perché Flex e Spring insieme

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Remoting Service

Permette al client di invocare metodi di oggetti sull’application server

Le informazioni tipizzate (Java / AS) sono mantenute

Encoding dei dati in formato binario

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Remoting Service

BlazeDS viene configurato attraverso una serie di file:

• Services-config.xml• Remote-services.xml• Messaging-services.xml• Proxy-services.xml

Questi file contengono le informazioni delle destination per i servizi remoti e gli adapter per l’implementazione di servizi

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Flex Remoting: le basi

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Flex Remoting: le basi

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

SpringFactory: il vecchio approccio

Nel vecchio approccio veniva utilizzata una classe SpringFactory che però aveva degli svantaggi:

• Utilizzava un approccio “dependency lookup”• Necessità di molteplici configurazioni

Il vecchio approccio è stato una barriera per l’adozione di Flex e BlazeDS dagli sviluppatori Spring.

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

SpringFactory: il vecchio approccio

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring-Flex:il nuovo approccio

Con una collaborazione tra Adobe e SpringSource è nato il progetto Spring-Flex:

• Semplificare la configurazione di BlazeDS• Usare il MessageBroker di BlazeDS come un bean

“Spring-managed”• Indirizzare i messaggi http di flex al MessageBroker

attraverso lo Spring DispatcherServlet

http://www.springsource.org/spring-flex

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring-Flex:il nuovo approccio

Per usare Spring-Flex bisogna avere i seguenti requisiti:

• Java 5 o +• Adobe BlazeDS 3.2 o +• Spring 2.5 con dependencies o +

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring-Flex:configurazione

Dopo aver scaricato ed installato BlazeDS e Spring BlazeDS Integration dovrete configurare il MessageBroker:

• È il componente responsabile per gestire i messaggi HTTP dal client Flex

• È gestito da Spring• I messaggi sono passati al MessageBroker di Spring

attraverso la DispatcherServlet di Spring

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring-Flex:configurazione

La DispatcherServlet è configurata nel bootstrap di Spring nell’WebApplicationContext (file web.xml):

<servlet-class>

org.spring.framework.web.servlet. DispatcherServlet

</servlet-class>

• Prima era:flex.messaging.MessageBrokerServlet

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring-Flex:configurazione

Nell’applicationContext.xml file di BlazeDS vanno aggiunti i seguenti beans:

• SimpleUrlHandlerMapping

• MessageBrokerHandlerAdapter

• MessageBrokerFactoryBean (da flex.messaging)

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring-Flex:configurazione

A questo punto Spring gestisce il MessageBroker per permettere ai beans di essere connessi direttamente alle remoting call di Flex.

In questo modo le operazioni di serializzazione e deserializzazione tra Java e AMF avvengono automaticamente

Questo ci permette di non scrivere molto codice di configurazione nel file remoting-config.xml

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Nomi di metodi riservati per RemoteObject

If a remote method has the same name as a method defined by the RemoteObject class, or by any of its parent classes, then you cannot call the remote method directly. The RemoteObject class defines the following method names:

propertyIsEnumerable()

setCredentials()

setPropertyIsEnumerable()

setRemoteCredentials()

toString()

valueOf()

disconnect()

getOperation()

hasOwnProperty()

initialized()

isPrototypeOf()

logout()

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring-Flex: Sicurezza

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring-Flex: Messaging

Il progetto già prevede la compatibilità col nuovo sistema di Spring Integration per le comunicazione asincrone

Integrazione con BlazeDS MessageService senza usare la configurazione del file message-services.xml

Sono esposti adapters per Spring JMS e SpringIntegration per permettere la comunicazione tra il client Flex e i message-driven POJOs di Spring

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring BlazeDS: il futuro

Queste sono alcune delle nuove features in fase di implementazione per la prossima versione del progetto:

– Spring 3 REST integration

– Supporto per client-types multipli

– Supporto alla serializzazione Hibernate

– Semplicità nella serializzazione di entità Hibernate a AMF senza l’errore LazyInitializationException

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring e Livecycle Data Services

Adobe sta lavorando all’integrazione con LCDS:

– Data Assembler configurati come Spring beans

– SpringHibernateAssembler che utilizza un HibernateSessionFactory di Spring (equivalente dell’Assembler JPA)

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring ActionScript

Il progetto è mantenuto dallo stesso creatore del Prana framework (http://www.springactionscript.org/)

E’ entrato a far parte di Spring Extension

Il framework contiene un Inversion of Control Container, un MVCS framework, estensioni per Cairngorm e PureMVC frameworks e altre utilities.

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Flex + Spring

Spring ActionScript

E’ un container ActionScript che applica il design pattern IoC:

IoC tende a tener disaccoppiati i singoli componenti di un sistema, in cui le eventuali

dipendenze non vengono scritte all'interno del componente stesso, ma gli vengono

iniettate dall'esterno: non si segue il normale flusso di controllo dei linguaggi imperativi,

in cui, nel momento del bisogno, si richiamano funzioni di classi o librerie esterne, gli

oggetti quindi non istanziano e richiamano gli oggetti dal quale il loro lavoro dipende,

ma queste funzionalità vengono fornite da un ambiente esterno tramite dei contratti

definiti da entrambe le entità.

La Dependency Injection è una delle tecniche con le quali si può attuare l'IOC.

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Sample application : EmployeeService

� Tecnologie� Flex 4

� Spring 2.5.6

� Tomcat 6

� MySql 5

� Java 6

Si vuole illustrare come si semplificala configurazione

di un'applicazione che richiede

Front-end in FlexBack-end in Spring

Grazie alla Spring BlazeDS Integration

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Back-end : Entity

� EmployeeEntity

� Nome

� Cognome

� Indirizzo

� Email

� Categoria : Analyst – Consultant – Junior - Manager

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Layer architecture

Dati DAOSpringBean

Front-endBack-end – ORM JPA

Employee

-Name-Surname-Address-Mail-WorkCategory :

-Analyst-Consultant-Junior-Manager

EmployeeDAO

Riferimento a SimpleJdbcTemplate

EmployeeService

Riferimento EmployeeDAO

Flex application

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Front-end : Flex

Vediamo l’applicazione

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Configurazione Spring BlazeDS Integration

� Configurazione ed uso del Message-broker

� Configurare Message-broker in app-context.xml

� Configurazione del mapping delle request del client Flex verso il Message-broker

� BlazeDS Remoting service & Remoting-destination

� Consentire l'exporting dei bean di Spring per le chiamate remote da un client Flex

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Configurazione ed uso del Message-broker

� Configurare Message-broker in app-context.xml

� Configurazione del mapping delle request del client Flex verso il Message-broker

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Config Message-broker

� Aggiungere Flex namespace<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:flex="http://www.springframework.org/schema/flex"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="

http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/flex http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">

...<beans>

� Message-broker tag per la configurazione di default

<flex:message-broker/>

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Mapping requests to Message-broker (1/3)

� DispatcherServlet mapping in web.xml<servlet>

<servlet-name>BlazeServlet</servlet-name><servletclass>org.springframework.web.servlet.DispatcherServlet</servlet-

class> <init-param><param-name>contextConfigLocation</param-name><param-value> /WEB-INF/spring/app-context.xml </param-value>

</init-param><load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping><servlet-name>BlazeServlet</servlet-name><url-pattern>/messagebroker/*</url-pattern>

</servlet-mapping>

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Mapping requests to Message-broker (2/3)

� HanlderMapping nello Spring app-context.xml

<!-- Mappa le request indirizzate a /* verso il BlazeDS MessageBroker --><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="mappings"><value>

/*=_messageBroker</value>

</property></bean>

<!-- Effettua il dispatch delle request mappate verso MessageBroker --><bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter"/>

Il setup di default installato dal <flex:message-broker/>è equivalente a

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Mapping requests to Message-broker (3/3)

� Channel definition in the BlazeDS services-config.xml

<channel-definition id="my-amf"

class="mx.messaging.channels.AMFChannel"><endpoint url="http://{server.name}:{server.port}/

{context.root}/messagebroker/amf"class="flex.messaging.endpoints.AMFEndpoint"/>

</channel-definition>

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Exporting Spring Beans per Flex remoting

� Remoting service

� Remoting destination tag

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Remoting service

<?xml version="1.0" encoding="UTF-8"?><service id="remoting-service" class="flex.messaging.services.RemotingService">

<adapters><adapter-definition id="java-object"

class="flex.messaging.services.remoting.adapters.JavaAdapter"default="true"/>

</adapters></service>

L'inclusione del tag message-broker per dafult include la seguente configurazioneche normalmente viene inclusa nel remote-config.xml

Bisogna comunque dichiarare un canale di defaultincludendone la dichiarazione nel services-config.xml

<services><default-channels>

<channel ref="my-amf"/></default-channels>

</services>

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

Remoting-destination tag

Serve ad esportare gli esistenti servizi gestiti da Springper consentire il remoting diretto da un client Flex

<!-- Bean employeeService --><bean id="employeeService" class="service.EmployeeService">

<constructor-arg ref="employeeDAO" /></bean>

<!-- REMOTING DESTINATION TAG --><flex:remoting-destination ref="employeeService" />

Data la seguente definizione di Spring bean

Il seguente tag remoting-destination espone il servizio ad un client Flex come servizio remoto chiamato employeeService

<speaker name> – <email> – <company/community>

Javaday IV – Roma – 30 gennaio 2010

MARCO CASARIOCTO – Comtastehttp://casario.blogs.com

top related