1. Après-midi
technique Adobe
Comment améliorer la
communication entre une
application RIA et votre SI
1
2006 Adobe Systems Incorporated. All Rights Reserved.
2. Agenda
Rappels sur l’offre Adobe Flex
Flex et les appels standards du web
Flex et le HTTPRequest
Flex et l’appel de WebService
Communication entre Flex et les serveurs d’applications Java
Différences entre Blaze DS et LiveCycle DS
Flex et le Remoting, et architecture
Flex et les techniques de messaging
Le Data Management
Services additionnels
Architecture: Sécurité, Cluster
Génération d’un PDF avec LCDS
Appel d’un service documentaire LiveCycle.
AIR
2
2008 Adobe Systems Incorporated. All Rights Reserved.
3. Rappels sur l’offre
Adobe Flex
33
2006 Adobe Systems Incorporated. All Rights Reserved.
4. Quatre générations d’applications d’Entreprise
Global
2004
WEB APPLICATIONS RICH INTERNET
APPLICATIONS
REACH
1998
1992
Local
MAINFRAME DESKTOP
Server Interaction Client Interaction
RICH
®
4
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
5. Challenges techniques de la RIA
Web 1.0 application Rich Internet Application
• Améliorer les temps de réponses
• Alléger la bande passante
• Décharger le serveur
• Diminuer les tests
<page>
<page>
<page>
<page> <data>
<page>
<page>
<page>
<application>
®
Copyright 2008 Adobe Systems Incorporated. All rights reserved. Adobe confidential. 5
5
6. Trois technologies Open Source d’Adobe pour les RIA
FLASH PLAYER FLEX 3 SDK LIVECYCLE DATA SERVICES
Flash Player 9 Gratuit, framework open source LiveCycle Data Services
12 ans d’existence Flex Builder basé sur Eclipse Data intensive applications
98% des PC équipés Framework MVC Meilleures perfs du marché
Langage objet AS3 Accessibilité, Test unitaire, Debug Remoting architecture
AVM2 JIT Compiler Component based programming Messaging and Data Push
Open Source: Tamarin Dévelopment rapide Data Management Services
Offline synchronization
®
Copyright 2008 Adobe Systems Incorporated. All rights reserved. Adobe confidential. 6
6
7. Adobe Flex Lineup
Adobe® Adobe®
Flex™ SDK 3 Flex™ Builder™ 3
MXML and ActionScript 3.0 Standard Edition
Framework and Class Library Visual Layout
Command-line Compiler Code Hinting
Debugging
Adobe® LiveCycle® Skinning & Styling
Data Services ES
Data Management Messaging Professional Edition
Web-Tier Compiler RPC Services Charting Components
RIA-PDF Creation Service Adapters Advanced DataGrid / OLAP
Portal Deployment Proxy Service Performance Profiling
2008 Adobe Systems Incorporated. All Rights Reserved.
8. Fonctionnement et déploiement
Flex Builder IDE Browser
Flex SDK Flash Player
MXML ActionScript
Flex Class Library SOAP HTTP/S AMF/S RTMP/S
Web Server
Compile
XML/HTTP
LC Data Services
REST
SOAP Web Services J2EE Application Server
Existing Applications & Infrastructure
9. Ressources pour apprendre Flex
Site web de référence:
http://www.flex.org
Tutoriaux et vidéos techniques:
http://developer.adobe.com
Ateliers gratuits de formation sur 1 jour:
http://www.baao.com
Blog pour se tenir informé de l’actualité Adobe France, tutoriaux, slides:
http://codemoiunmouton.wordpress.com
9
2008 Adobe Systems Incorporated. All Rights Reserved.
10. Flex et les appels
standards du web
HTTPRequest, WebService
1
10
0
2006 Adobe Systems Incorporated. All Rights Reserved.
11. HTTPRequest: le standard du web
Appel d’un script sur une URL qui retourne du texte (print)
Si la réponse est en XML, les composants Flex l’interprête nativement
Déclaration par un tag <mx:HTTPService>. La méthode send() lance une requête HTTP sur l’url
spécifiée.
Si la requête ne passe pas par un proxy:
useProxy = false
HTTP GET, POST
Si la requête passe par un proxy:
useProxy = true
HTTP GET, POST, HEAD, OPTIONS, TRACE & DELETE
11
2008 Adobe Systems Incorporated. All Rights Reserved.
13. WebService: le standard du web
Une application Flex peut interagir avec des Webservices qui définissent leurs
interfaces en document:
Web Services Description Language 1.1 (WSDL 1.1)
Du coup, une application Flex accède à un webService par une URL.
Une application Flex supporte les requêtes et les réponses SOAP
Flex Builder dispose d’un outil d’introspection de WSDL qui génère automatiquement
un proxy AS3.
13
2008 Adobe Systems Incorporated. All Rights Reserved.
15. Crossdomain.xml
Le Flash Player applique des règles de sécurité pour accéder à des données.
Une application Flex peut accéder aux sources de données qui sont sur le même domaine que le
fichier SWF.
Cependant une application Flex ne peut accéder à des sources de données situées dans un
domaine différent, sauf si le domaine lui en donne la permission. Pour cela, il faut déployer un
fichier crossdomain.xml à la racine du domaine.
<?xml version=quot;1.0quot;?>
<!DOCTYPE cross-domain-policy SYSTEM
quot;http://www.adobe.com/xml/dtds/cross-domain-policy.dtdquot;>
<cross-domain-policy>
<allow-access-from domain=quot;*.monserveur.comquot;/>
</cross-domain-policy>
Exemple: http://www.yahoo.com/crossdomain.xml
15
2008 Adobe Systems Incorporated. All Rights Reserved.
16. Les projets autres que J2EE
Flex et PHP : Flex et .Net:
Flex et Coldfusion: Flex et Ruby:
16
2008 Adobe Systems Incorporated. All Rights Reserved.
17. Deux approches dans le développement Client/Server
Couplage faible: Protocoles basés sur le Document(XML, SOAP, …)
Langage neutre, facile à débugger et documenter
Le parsing et le formatage du code est plus difficile à maintenir (de + en + complexe)
Le temps de traitement augmente avec l’augmentation de la complexité
Il est plus simple de développement indépendamment le client du serveur
Couplage fort: Protocoles basés sur un modèle Objet (RMI, AMF, …)
Difficile de changer de langage
Plus rapide pour le client et le serveur, diminution de la bande passante
Plus simple de partager du code ou d’utiliser de la génération automatique de code basée
sur le modèle
Meilleure gestion de la complexité du modèle (scalabilité)
Moins de design de code, moins de dépendance sur le format qui transite
Manipulation du client et du serveur en parallèle pour rafraichir en même temps les deux
parties
1
7
2005 Adobe Systems Incorporated. All Rights Reserved.
18. Flex et les serveurs
d’application Java
Remoting, Messaging et Data
Management
1
18
8
2006 Adobe Systems Incorporated. All Rights Reserved.
19. LiveCycle Data Services ES
LiveCycle Data Services ES
LiveCycle Data Services est un ensemble de Service
Data Management
composants J2Ee et d’API utilisés pour: Data Synchronization
Adapters
LiveCycle
Off-line Applications
Créer des RIA qui manipulent énormément de
Data Paging ColdFusion
données avec un minimum de code, et accélérer
la mise en production en programmant sur un RPC Services
Hibernate
modèle client-serveur. Web Service
HTTP Service SQL
Intégrer une RIA avec des applications existantes
Remote Object Service
de l’infrastructure J2EE. JMS
Messaging
Intégrer facilement des RIA avec des processus
Java
documentaires LiveCycle. Publish & Subscribe
Collaboration
Développer des application collaboratives, gérer Real Time Data Push
Custom…
la synchronisation offline, gérer le temps réel.
Proxy Service
Générer des PDF à la demande qui intègrent des Web-tier Compiler
éléments graphiques.
Portal Deployment
RIA-PDF Generation
19
2008 Adobe Systems Incorporated. All Rights Reserved.
20. Qu’est ce que BlazeDS?
BlazeDS est un sous-ensemble Open Source BlazeDS
Service
(LGPL) de LCDS. C’est une solution de Remoting Data Management Adapters
et de HTTP messaging. Data Synchronization
LiveCycle
Off-line Applications
Gratuit et Open Source Data Paging ColdFusion
Ouverture du format d’échange de données AMF3 RPC Services Hibernate
(Action Message Format) Web Service
Technologie de messaging sur le standard HTTP HTTP Service SQL
(équivalent de Comet) Remote Object Service
JMS
Builds certifiées, support entreprise disponible (LC
Messaging
Community Edition)
Publish & Subscribe Java
Collaboration
Custom…
Real Time Data Push
Proxy Service
Web-tier Compiler
Portal Deployment
RIA-PDF Generation
20
2008 Adobe Systems Incorporated. All Rights Reserved.
21. LCDS.war
Un fichier LCDS.war est fourni pour démarrer vos projets Flex / Java.
Structure du WAR:
+WEB-INF/classes Pour placer ses classes Java
+WEB-INF/lib Contient les librairies Java de LCDS
+WEB-INF/flex Contient les fichiers XML de configuration
Remoting-config.xml Destinations vers les classes Java
Messaging-config.xml Destinations pour le messaging
Data-Management-config.xml Destinations vers les assemblers
Proxy-config.xml Destinations vers les services HTTP
Services-config.xml Configuration des canaux
21
2008 Adobe Systems Incorporated. All Rights Reserved.
22. Plateformes supportées
Windows 2000 and Vista, x86, x64
Windows 2003 x86, x64, IPF
Solaris 9 and 10 SPARC
RedHat Linux AS 4 and 5, x86, x64
Suse Enterprise Linux 9 and 10, x86, x64
Suse Enterprise Linux 9 and 10, zSeries (with IBM WebSphere only)
IBM AIX 5.3, PPC (with IBM WebSphere only)
HP-UX 11i v3 IPF, PA/RISC (with BEA Weblogic only)
22
2008 Adobe Systems Incorporated. All Rights Reserved.
23. Serveurs d’applications supportés
Apache Tomcat 6.0.x
JBoss Application Server 4.2.2 4.0.3 SP1+, 4.2.x
BEA Weblogic 9 and 10
IBM WebSphere Application Server 6.1.x
Fujitsu Interstage 9
Hitachi Cosminexus 7
NEC WebOTX JDK supportés
Oracle 10G AS (10.1.3) Sun JDK 5
SAP NetWeaver CE 7.1 SP3 BEA JRockit 5
Adobe JRun 4 Updater 7 IBM JDK 5
23
2008 Adobe Systems Incorporated. All Rights Reserved.
24. Remoting
Demonstration
2
24
4
2006 Adobe Systems Incorporated. All Rights Reserved.
25. Créez une classe Java
25
2008 Adobe Systems Incorporated. All Rights Reserved.
26. remoting-config.xml
Les destinations pour le remoting pointent directement sur les classes Java
en utilisant un « adapter » préconfiguré sur le serveur (java-object) et un
canal de communication (my-amf)
Chaque destination pointe sur une seule classe Java
<destination id=“SimpleJavaService”>
<properties>
<source>NoidaTraining.SimpleJavaService</source>
<scope>application</scope>
</properties>
</destination>
NB: Vous n’avez pas besoin de redémarrer le serveur après avoir modifié les fichiers de configuration de LCDS
26
2008 Adobe Systems Incorporated. All Rights Reserved.
27. Précisions sur le <scope>
<destination id=“SimpleJavaService”>
<properties>
<source>NoidaTraining.SimpleJavaService</source>
<scope>application</scope>
</properties>
</destination>
request - un nouvel objet pour chaque appel de méthode (par défaut)
session - les objets restent disponibles le temps de la session cliente
application – les objets restent disponibles pendant toute la durée de vie de
l’application web
27
2008 Adobe Systems Incorporated. All Rights Reserved.
28. <mx:RemoteObject>
28
2008 Adobe Systems Incorporated. All Rights Reserved.
29. Multiple Event Handlers
Pour un même service Java, je peux gérer plusieurs méthodes.
29
2008 Adobe Systems Incorporated. All Rights Reserved.
30. Appel asynchrone et utilisation du token
Lorsqu’on appelle une méthode, je rajoute un attribut à l’opération
var remoteFn:AbstractOperation = remoteObject.getOperation(quot;loginquot;);
var call : AsyncToken = remoteFn.send();
call.someAttr = “Aquot;;
Lorsque je gère le retour, je teste l’attribut:
if (event.token.someAttr == “A”) {
…
} else {
…
}
2008 Adobe Systems Incorporated. All Rights Reserved.
31. Echange de données entre Java and ActionScript
31
2008 Adobe Systems Incorporated. All Rights Reserved.
32. Java Value Object
32
2008 Adobe Systems Incorporated. All Rights Reserved.
35. Advanced Concepts - Remote Object
Scope et attribute-id pour gérer des composants
Scope: request, session, application – contrôle de cycle de vie de votre remote object
Attribute-id: stock le composant sous ce nom dans le ServletContext ou la HTTPSession pour le partager avec une JSP ou
d’autres destinations
FlexFactory: interface pour Spring
Exemple de configuration:
<destination name=“SpringComponent”>
<properties>
<factory>spring</factory>
<source>MySpringComponentId</source>
</properties>
</destination>
FlexSession
Obtenue à partir de FlexContext
Utilise HTTPSession if vous êtes sur HTTP, émule les fonctionnalités d’une session HTTP pour le RTMP
[Transient] metadata
Propriété pour l’ActionScript (annotation) qui ne sera pas sérialiser pour le serveur
35
2008 Adobe Systems Incorporated. All Rights Reserved.
36. Mapping personnalisé entre ActionScript et Java
Si les mécanismes standards de sérialisation et de désérialisation de données
entre ActionScript (client) et Java (server) ne sont pas satisfaisants:
Vous pouvez implémenter l’interface ActionScript sur le client grâce à
flash.utils.Iexternalizable
Vous pouvez créer la correspondance Java et écrire votre propre schéma
de sérialisation avec java.io.Externalizable
2008 Adobe Systems Incorporated. All Rights Reserved.
37. Messaging
3
37
7
2006 Adobe Systems Incorporated. All Rights Reserved.
38. Publish/Subscribe Messaging
Livecycle Data Services
Client A
Message
Endpoint
Service
Client B
RTMP
Client C
AMF Publisher
HTTP Subscriber
38
2008 Adobe Systems Incorporated. All Rights Reserved.
39. Demo: Chat
39
2008 Adobe Systems Incorporated. All Rights Reserved.
40. messaging-config.xml
Ajout de la destination “chat
<destination id=“chat”>
<adapter ref=“actionscript”>
</destination>
L’adapter ActionScript n’est utilisé que pour les applications qui n’utilisent que
des clients Flex. C’est l’adapter par défaut.
L’adapter JMS permet à des clients Flex et Java de communiquer.
40
2008 Adobe Systems Incorporated. All Rights Reserved.
41. Publier un Message
Déclaration d’un tag Producer
<mx:Producer id=quot;producerquot; destination=quot;chatquot;/>
Envoyer le message
public function send():void
{
var message:AsyncMessage = new AsyncMessage();
message.header.userId = userId.text;
message.body = msg.text;
producer.send(message);
}
41
2008 Adobe Systems Incorporated. All Rights Reserved.
42. S’abonner à une Destination
Déclarer un Consumer
<mx:Consumer id=quot;consumerquot; destination=quot;chat“
message=quot;messageHandler(event)quot;/>
Gérer la réception de messages
public function messageHandler(event:MessageEvent):void
{
log.text += event.message.header.userId + quot;: quot; + event.message.body.msg + quot;nquot;;
}
S’abonner aux messages
consumer.subscribe();
Exemple: www.toutracker.org
42
2008 Adobe Systems Incorporated. All Rights Reserved.
43. Messaging - Data Push
LiveCycle Data Services
Messaging
Adapter X
System X
Message JMS
Endpoint JMS Adapter
Services Provider
Messaging
Adapter Y
System Y
RTMP
AMF Publisher
HTTP Subscriber
43
2008 Adobe Systems Incorporated. All Rights Reserved.
44. Déclaration de la destination « feed »
<destination id=quot;feedquot;>
<properties>
<network>
<session-timeout>0</session-timeout>
</network>
<server>
<max-cache-size>1000</max-cache-size>
<message-time-to-live>0</message-time-to-live>
<durable>false</durable>
</server>
</properties>
</destination>
44
2008 Adobe Systems Incorporated. All Rights Reserved.
45. Classe Java qui génère et envoie un message sur « feed » 1/2
45
2008 Adobe Systems Incorporated. All Rights Reserved.
46. Classe Java qui génère et envoie un message sur « feed » 2/2
46
2008 Adobe Systems Incorporated. All Rights Reserved.
47. Les Channels dans LiveCycle Data Services ES
47
2008 Adobe Systems Incorporated. All Rights Reserved.
48. Quels canaux utiliser pour le temps réel ? (BlazeDS)
Channel Description Les Plus Les Moins
Poll ~ 1 min Poll roundtrip overhead
AMF
Server parks poll Works with firewalls
Long Polling Servlet API blocking IO
until data available
HTTP proxies can
Server pushes No polling overhead
swallow messages
Streaming AMF infinite messages
Servlet API blocking
(HTTP Chunk) Works with firewalls
IO
AMF Messages/
Works with firewalls
Simple polling request/response
Piggyback Enabled piggybacking
48
2008 Adobe Systems Incorporated. All Rights Reserved.
49. Quels canaux utiliser pour le temps réel ? (LCDS)
Channel Description Les Plus Les Moins
RTMP
(in a ChannelSet with fallback to Single duplex Immediate notification Non standard port
NIO AMFChannel configured to connection when a client is closed blocked by firewalls
Long Poll)
Better scalability and no
NIO AMF Uses an NIO server and
configured upper bound Requires more network
Long Polling minimal HTTP stack
on no. of parked poll configuration
(no fallback) 1000s of clients
requests
NIO Streaming AMF Better scalability and no
Uses an NIO server and
(in a ChannelSet followed by configured upper bound
minimal HTTP stack Same as above
the polling AMFChannel below on the number of
1000s of clients
for fallback) streaming connections
NIO AMF Uses an NIO server and
Simple polling minimal HTTP stack Same as above Same as above
Piggyback Enabled 1000s of clients
49
2008 Adobe Systems Incorporated. All Rights Reserved.
50. Data Management
Demonstration
5
50
0
2006 Adobe Systems Incorporated. All Rights Reserved.
51. Travailler avec des données:
Le mode traditionnel du HTML (page)
Persistence Solutions:
Hibernate
JDOs
EJB 3
Others…
data data
Le client est souvent utiliser pour capturer de la données et l’affichage
Le client ne conserve pas une version de la donnée
Pas de réelle manipulation de données côté client
Les données doivent être snchronisées entre le middle-tier et la base
51
2008 Adobe Systems Incorporated. All Rights Reserved.
52. Le modèle de la RIA
data data data
Le client possède une version de la donnée
Manipulation riche des données côté client
La donnée doit être synchronisée entre le tiers client, le middle-tier ET entre
le middle-tier et la base
52
2008 Adobe Systems Incorporated. All Rights Reserved.
53. L’approche RPC
RPC
Services
data data
Responsabilité du développeur:
Notifier les changements - flags (create, update, delete)
Maintenir une version originelle de la donne pour
appliquer une stratégie de locking
Créer des Remote Procedure Calls pour créer, mettre à
jour et effacer des enregistrements
Identifier et gérer les conflits / les appels concurrents
53
2008 Adobe Systems Incorporated. All Rights Reserved.
54. L’approche de LiveCycle Data Services
Data
Service
data data
Client-Side API:
Flags changes (create, update, delete)
Maintient une version d’origine de la donnée pour
appliquer la stratégie de locking
Envoie une liste de changement à LCDS dans un groupe
de messages
Gère les conflits, les accès concurrents
54
2008 Adobe Systems Incorporated. All Rights Reserved.
55. L’approche de LiveCycle Data Services
Object
Data Hibernate
Service JDBC
ColdFusion
data data
Custom
Data Service:
Désérialise la liste des changements qui proviennent du
client
Sérialise les données avant de les données au client
Passe la liste des changement au bon adapter
Notifie les clients qui sont abonnés à la destination
Adapter:
Effectue les changements
Identifie les conflits
Passe les résultats à Data Services
55
2008 Adobe Systems Incorporated. All Rights Reserved.
56. Data Services
LiveCycle Data Services
JDBC
RDBMS
Client A Adapter
Data Object
Endpoint DAO
Service Adapter
Client B
Hibernate
Hibernate
Adapter
CFC
Client C Adapter ColdFusion
56
2008 Adobe Systems Incorporated. All Rights Reserved.
57. La résolution de conflits
Les conflits interviennent quand différents clients essayent de mettre à jour
la même donnée en même temps.
Le nombre de conflits dans une application dépend de la stratégie de
locking (concurrency level) implémentée dans l’application.
LCDS n’impose pas de stratégie de locking, vous pouvez même choisir de ne
pas gérer les conflits.
Vous êtes libre d’estimer ce que représente un conflit par rapport au
contexte de votre application.
LCDS prévient les clients quand un conflit a lieu en envoyant une
DataSyncException.
Côté client, LCDS fournit une API sophistiquée pour résoudre les conflits. Un
événement est dispatché en cas de conflit.
2008 Adobe Systems Incorporated. All Rights Reserved.
58. Concepts avancés - Data Management Services
Paging
Managed associations
Supports replicating general object graphs from server to client (with cycles)
Tracks changes to relationships and pushes them to the server
Ensures a single instance of the client object for each id
Optionally associations can be “lazy” – referenced item is fetched as needed
Writing custom assemblers
Implement these methods: getItem, createItem, updateItem, deleteItem, fill, count
Source to HibernateAssembler is included
58
2008 Adobe Systems Incorporated. All Rights Reserved.
59. Le code côté client Flex
<?xml version=quot;1.0quot; encoding=quot;utf-8quot;?>
<mx:Application xmlns:mx=quot;http://www.macromedia.com/2005/mxmlquot;
creationComplete=quot;initApp()quot;>
<mx:Script>
public var ds:DataService;
[Bindable]
public var contacts:ArrayCollection;
public function initApp() {
contacts = new ArrayCollection();
ds = new DataService(quot;contactquot;);
ds.fill(contacts);
}
</mx:Script>
<mx:DataGrid dataProvider=quot;{contacts}quot; editable=quot;true“/>
</mx:Application>
59
2008 Adobe Systems Incorporated. All Rights Reserved.
60. Data management-confis.xml
<destination id=quot;contactquot;>
<adapter ref=quot;java-daoquot; />
<properties>
<metadata>
<identity property=quot;contactIdquot;/>
</metadata>
<server>
<assembler>
<class>samples.contact.ContactAssembler</class>
</assembler>
<fill-method>
<name>loadContacts</name>
</fill-method>
<sync-method>
<name>syncContacts</name>
</sync-method>
</server>
</properties>
</destination>
60
2008 Adobe Systems Incorporated. All Rights Reserved.
61. ContactAssembler.java
public class ContactAssembler {
public List loadContacts() {
ContactDAO dao = new ContactDAO();
return dao.getContacts();
}
public List syncContacts(List changes) {
Iterator iterator = changes.iterator();
ChangeObject co;
while (iterator.hasNext()) {
co = (ChangeObject) iterator.next();
if (co.isCreate()) {
// invoke logic to create item
} else if (co.isUpdate()) {
// invoke logic to update item
} else if (co.isDelete()) {
// invoke logic to delete item
}
}
return changes;
}
}
61
2008 Adobe Systems Incorporated. All Rights Reserved.
62. Clustering
6
62
2
2006 Adobe Systems Incorporated. All Rights Reserved.
63. Implémentation du clustering
In-built software clustering
Basé sur Jgroups
Support du Load Balancing Hardware (out-of-the-box)
Support de clusters horizontaux et verticaux
Les destinations diffusent leurs disponibilités et les endpoints accessibles
dans le cluster
Les destinations de messaging et de data services diffusent les messages ou
les changements aux destinations correspondantes sur les autres serveurs
du cluster.
63
2008 Adobe Systems Incorporated. All Rights Reserved.
64. En résumé …
Failover Messaging State Replication
Proxy Service OUI NON
Remoting Service OUI NON
Message Service OUI OUI
Data Management Service OUI OUI
64
2008 Adobe Systems Incorporated. All Rights Reserved.
65. Sécurité
6
65
5
2006 Adobe Systems Incorporated. All Rights Reserved.
66. Glossaire
Destination
MSG Channel Endpoint Destination
Destination
MSG Channel Endpoint Destination
Destination
https://monserveur:443/messagebroker/amfsecure
66
2008 Adobe Systems Incorporated. All Rights Reserved.
67. Securiser le canal RTMP
<channel-definition id=quot;my-rtmps“
class=quot;mx.messaging.channels.SecureRTMPChannelquot;>
<endpoint uri=quot;rtmps://{server.name}:2099“
class=quot;flex.messaging.endpoints.SecureRTMPEndpointquot;/>
<properties>
<idle-timeout-minutes>30</idle-timeout-minutes>
<keystore-
file>C:/somedir/flex/dataservices/apps/j2ee/dev/WEBINF/flex/keys/server.key
store</keystore-file>
<keystore-password>password</keystore-password>
</properties>
</channel-definition>
2008 Adobe Systems Incorporated. All Rights Reserved.
68. Securiser le canal RTMP
Vous pouvez aussi spécifier un autre algorithme que celui proposé par
défaut par la JVM quand on active le SSL.
<algorithm>Default</algorithm> pour explicitement utiliser celui proposé par
défaut par la JVM.
<algorithm>SunX509</algorithm> pour utiliser celui de SUN.
<algorithm>IbmX509</algorithm> pour utiliser celui d’IBM.
De même, il exite les canaux secureAMF et le secureHTTP tous deux basés sur HTTPS
2008 Adobe Systems Incorporated. All Rights Reserved.
69. Sécuriser les endpoints HTTP et RTMP
Vous pouvez aussi protéger l’accès aux endpoints des canaux HTTP- et RTMP- :
<whitelist>
<ip-address-pattern>237.*</ip-address-pattern>
<ip-address>10.132.64.63</ip-address>
</whitelist>
<blacklist>
<ip-address>10.60.147.*</ip-address>
<ip-address-pattern>10.132.17.5[0-9]{1,2}</ip-address-pattern>
</blacklist>
2008 Adobe Systems Incorporated. All Rights Reserved.
70. Sécuriser des endpoints via JAAS
Par les contraintes de sécurité web basée sur JAAS
<destination id=“sampleJaasServicequot;>
……………………..
<security>
<security-constraint>
<auth-method>Custom</auth-method>
<roles>
<role>roDestUser</role>
</roles>
</security-constraint>
</security>
</destination>
2008 Adobe Systems Incorporated. All Rights Reserved.
71. Invocation de services sécurisés
Sécurisation de la communication Flex <-> LCDS :
var employeeHTTP:HTTPService = new HTTPService();
employeeHTTP.destination = quot;SecureDestquot;;
employeeHTTP.setCredentials(quot;myUserNamequot;, quot;myPasswordquot;);
empoyeeHTTP.send({param1: 'foo'});
Sécurisation d’un proxy:
<destination id=quot;samplesProxyquot;>
<channels>
<channel ref=quot;samples-amfquot;/>
</channels>
<properties>
<url>http://someserver/SecureService.jsp</url>
<remote-username>johndoe</remote-username>
<remote-password>opensaysme</remote-password>
</properties>
</destination>
2008 Adobe Systems Incorporated. All Rights Reserved.
72. Les bonus
Génération de PDF, invocation
de LiveCycle ES, AIR…
7
72
2
2006 Adobe Systems Incorporated. All Rights Reserved.
73. Conclusion
7
73
3
2006 Adobe Systems Incorporated. All Rights Reserved.
74. Pour aller plus loin…
Récupérer sur le site d’Adobe LiveCycle Data Services:
Installation automatique de lcds-samples
Installation du 30mins Test Drive avec toutes les sources
Retrouvez les slides sur le blog « Code moi un mouton »
Nos emails :
Bertrand Collard: bcollard@adobe.com
Michael Chaize: mchaize@adobe.com
74
2006 Adobe Systems Incorporated. All Rights Reserved.
75. Le QUIZZ !!!
Que doit-on modifier si l’on
souhaite utiliser un autre
canal de communication pour
le RemoteObject entre
l’application Flex et LCDS ?
75
2008 Adobe Systems Incorporated. All Rights Reserved.
76. Le QUIZZ !!!
Que doit-on mettre en place
pour accéder à un webService
externe à l’entreprise?
76
2008 Adobe Systems Incorporated. All Rights Reserved.
77. Le QUIZZ !!!
Comment Adobe a
implémenté le support du
clustering dans LCDS ?
77
2008 Adobe Systems Incorporated. All Rights Reserved.