adobe livecycle data services
DESCRIPTION
Mes slides sur livecycle data servicesTRANSCRIPT
2006 Adobe Systems Incorporated. All Rights Reserved. 11
Après-midi technique Adobe
Comment améliorer la communication entre une application RIA et votre SI
2008 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
2006 Adobe Systems Incorporated. All Rights Reserved. 33
Rappels sur l’offre Adobe Flex
Copyright 2008 Adobe Systems Incorporated. All rights reserved.
®
Quatre générations d’applications d’Entreprise
4
MAINFRAME
RE
ACH
Local
Global
RICHServer Interaction Client Interaction
DESKTOP
WEB APPLICATIONS
2004
1992
1998
RICH INTERNETAPPLICATIONS
®
Copyright 2008 Adobe Systems Incorporated. All rights reserved. Adobe confidential. 55
Challenges techniques de la RIA
• Améliorer les temps de réponses• Alléger la bande passante• Décharger le serveur• Diminuer les tests
Web 1.0 application Rich Internet Application
<page>
<page>
<page>
<page>
<page>
<page>
<page><application>
<data>
®
Copyright 2008 Adobe Systems Incorporated. All rights reserved. Adobe confidential. 66
Trois technologies Open Source d’Adobe pour les RIA
Flash Player 9
12 ans d’existence
98% des PC équipés
Langage objet AS3
AVM2 JIT Compiler
Open Source: Tamarin
Gratuit, framework open source
Flex Builder basé sur Eclipse
Framework MVC
Accessibilité, Test unitaire, Debug
Component based programming
Dévelopment rapide
LiveCycle Data Services
Data intensive applications
Meilleures perfs du marché
Remoting architecture
Messaging and Data Push
Data Management Services
Offline synchronization
FLASH PLAYER FLEX 3 SDK LIVECYCLE DATA SERVICES
2008 Adobe Systems Incorporated. All Rights Reserved.
Adobe Flex Lineup
Standard Edition
Visual Layout
Code Hinting
Debugging
Skinning & Styling
Adobe®Flex™ Builder™ 3
Data Management
Web-Tier Compiler
RIA-PDF Creation
Portal Deployment
Adobe® LiveCycle®Data Services ES
Charting Components
Advanced DataGrid / OLAP
Performance Profiling
Professional EditionMessaging
RPC Services
Service Adapters
Proxy Service
Command-line Compiler
MXML and ActionScript 3.0
Framework and Class Library
Adobe®Flex™ SDK 3
Fonctionnement et déploiement
Flex Builder IDE
Flex SDK
Flex Class Library
MXML ActionScript
Compile
SOAP HTTP/S AMF/S RTMP/S
Web Server
Existing Applications & Infrastructure
J2EE Application Server
LC Data ServicesXML/HTTPRESTSOAP Web Services
Browser
Flash Player
2008 Adobe Systems Incorporated. All Rights Reserved. 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
2006 Adobe Systems Incorporated. All Rights Reserved. 1010
Flex et les appels standards du webHTTPRequest, WebService
2008 Adobe Systems Incorporated. All Rights Reserved.
HTTPRequest: le standard du web
11
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
2008 Adobe Systems Incorporated. All Rights Reserved.
HTTPRequest par l’exemple
12
2008 Adobe Systems Incorporated. All Rights Reserved.
WebService: le standard du web
13
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.
2008 Adobe Systems Incorporated. All Rights Reserved.
WebService: le standard du web
14
2008 Adobe Systems Incorporated. All Rights Reserved.
Crossdomain.xml
15
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="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy>
<allow-access-from domain="*.monserveur.com"/> </cross-domain-policy>
Exemple: http://www.yahoo.com/crossdomain.xml
2008 Adobe Systems Incorporated. All Rights Reserved.
Les projets autres que J2EE
16
Flex et PHP : Flex et .Net:
Flex et Coldfusion: Flex et Ruby:
2005 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
2006 Adobe Systems Incorporated. All Rights Reserved. 1818
Flex et les serveurs d’application JavaRemoting, Messaging et Data Management
2008 Adobe Systems Incorporated. All Rights Reserved.
LiveCycle Data Services ES
Créer des RIA qui manipulent énormément de données avec un minimum de code, et accélérer la mise en production en programmant sur un modèle client-serveur.
Intégrer une RIA avec des applications existantes de l’infrastructure J2EE.
Intégrer facilement des RIA avec des processus documentaires LiveCycle.
Développer des application collaboratives, gérer la synchronisation offline, gérer le temps réel.
Générer des PDF à la demande qui intègrent des éléments graphiques.
19
LiveCycle Data Services est un ensemble de composants J2Ee et d’API utilisés pour:
LiveCycle Data Services ES
Data Management
RPC Services
Messaging
ServiceAdapters
Data Synchronization
Off-line Applications
Data Paging
Web Service
HTTP Service
Remote Object Service
Publish & Subscribe
Collaboration
Real Time Data Push
Proxy Service
Web-tier Compiler
Portal Deployment
RIA-PDF Generation
LiveCycle
ColdFusion
Hibernate
SQL
JMS
Java
Custom…
2008 Adobe Systems Incorporated. All Rights Reserved. 20
Qu’est ce que BlazeDS?
Gratuit et Open Source Ouverture du format d’échange de données AMF3
(Action Message Format) Technologie de messaging sur le standard HTTP
(équivalent de Comet) Builds certifiées, support entreprise disponible (LC
Community Edition)
BlazeDS est un sous-ensemble Open Source (LGPL) de LCDS. C’est une solution de Remoting et de HTTP messaging.
BlazeDS
Data Management
RPC Services
Messaging
ServiceAdapters
Data Synchronization
Off-line Applications
Data Paging
Web Service
HTTP Service
Remote Object Service
Publish & Subscribe
Collaboration
Real Time Data Push
Proxy Service
Web-tier Compiler
Portal Deployment
RIA-PDF Generation
LiveCycle
ColdFusion
Hibernate
SQL
JMS
Java
Custom…
2008 Adobe Systems Incorporated. All Rights Reserved. 21
LCDS.war
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
Un fichier LCDS.war est fourni pour démarrer vos projets Flex / Java.
2008 Adobe Systems Incorporated. All Rights Reserved.
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.
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
Oracle 10G AS (10.1.3)
SAP NetWeaver CE 7.1 SP3
Adobe JRun 4 Updater 7
23
Sun JDK 5
BEA JRockit 5
IBM JDK 5
JDK supportés
2006 Adobe Systems Incorporated. All Rights Reserved. 2424
RemotingDemonstration
2008 Adobe Systems Incorporated. All Rights Reserved.
Créez une classe Java
25
2008 Adobe Systems Incorporated. All Rights Reserved.
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.
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.
<mx:RemoteObject>
28
2008 Adobe Systems Incorporated. All Rights Reserved.
Multiple Event Handlers
Pour un même service Java, je peux gérer plusieurs méthodes.
29
2008 Adobe Systems Incorporated. All Rights Reserved.
Appel asynchrone et utilisation du token
Lorsqu’on appelle une méthode, je rajoute un attribut à l’opération
var remoteFn:AbstractOperation = remoteObject.getOperation("login");
var call : AsyncToken = remoteFn.send();
call.someAttr = “A";
Lorsque je gère le retour, je teste l’attribut:
if (event.token.someAttr == “A”) {…
} else {…
}
2008 Adobe Systems Incorporated. All Rights Reserved.
Echange de données entre Java and ActionScript
31
2008 Adobe Systems Incorporated. All Rights Reserved.
Java Value Object
32
2008 Adobe Systems Incorporated. All Rights Reserved.
ActionScript Value Object
33
2008 Adobe Systems Incorporated. All Rights Reserved.
Architecture n-tiers avec Remoting
2008 Adobe Systems Incorporated. All Rights Reserved.
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.
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
2006 Adobe Systems Incorporated. All Rights Reserved. 3737
Messaging
2008 Adobe Systems Incorporated. All Rights Reserved.
Publish/Subscribe Messaging
38
Message
Service
Livecycle Data Services
Endpoint
PublisherSubscriber
RTMP
AMF
HTTP
Client A
Client B
Client C
2008 Adobe Systems Incorporated. All Rights Reserved. 39
Demo: Chat
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.
2008 Adobe Systems Incorporated. All Rights Reserved. 41
Publier un Message
Déclaration d’un tag Producer
<mx:Producer id="producer" destination="chat"/>
Envoyer le message
public function send():void
{
var message:AsyncMessage = new AsyncMessage();
message.header.userId = userId.text;
message.body = msg.text;
producer.send(message);
}
2008 Adobe Systems Incorporated. All Rights Reserved. 42
S’abonner à une Destination
Déclarer un Consumer
<mx:Consumer id="consumer" destination="chat“ message="messageHandler(event)"/>
Gérer la réception de messages
public function messageHandler(event:MessageEvent):void{
log.text += event.message.header.userId + ": " + event.message.body.msg + "\n";}
S’abonner aux messages
consumer.subscribe();
Exemple: www.toutracker.org
2008 Adobe Systems Incorporated. All Rights Reserved. 43
Messaging - Data Push
Message
Services
LiveCycle Data Services
Adapter Y
Adapter X
Messaging
System Y
Messaging
System X
EndpointJMS
ProviderJMS Adapter
PublisherSubscriber
RTMP
AMF
HTTP
2008 Adobe Systems Incorporated. All Rights Reserved.
Déclaration de la destination « feed »
44
<destination id="feed">
<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>
2008 Adobe Systems Incorporated. All Rights Reserved.
Classe Java qui génère et envoie un message sur « feed » 1/2
45
2008 Adobe Systems Incorporated. All Rights Reserved.
Classe Java qui génère et envoie un message sur « feed » 2/2
46
2008 Adobe Systems Incorporated. All Rights Reserved.
Les Channels dans LiveCycle Data Services ES
47
2008 Adobe Systems Incorporated. All Rights Reserved.
Quels canaux utiliser pour le temps réel ? (BlazeDS)
Channel Description Les Plus Les Moins
AMFLong Polling
Poll ~ 1 minServer parks poll
until data availableWorks with firewalls
Poll roundtrip overhead
Servlet API blocking IO
Streaming AMFServer pushes
infinite messages(HTTP Chunk)
No polling overhead
Works with firewalls
HTTP proxies can swallow messages
Servlet API blocking IO
AMF Simple polling
Piggyback Enabled
Messages/ request/response
piggybacking
Works with firewalls
48
2008 Adobe Systems Incorporated. All Rights Reserved.
Quels canaux utiliser pour le temps réel ? (LCDS)
Channel Description Les Plus Les Moins
RTMP(in a ChannelSet with fallback to NIO AMFChannel configured to
Long Poll)
Single duplex connection
Immediate notification when a client is closed
Non standard port blocked by firewalls
NIO AMFLong Polling(no fallback)
Uses an NIO server and minimal HTTP stack
1000s of clients
Better scalability and no configured upper bound
on no. of parked poll requests
Requires more network configuration
NIO Streaming AMF(in a ChannelSet followed by
the polling AMFChannel below for fallback)
Uses an NIO server and minimal HTTP stack
1000s of clients
Better scalability and no configured upper bound
on the number of streaming connections
Same as above
NIO AMF Simple polling
Piggyback Enabled
Uses an NIO server and minimal HTTP stack
1000s of clientsSame as above Same as above
49
2006 Adobe Systems Incorporated. All Rights Reserved. 5050
Data ManagementDemonstration
2008 Adobe Systems Incorporated. All Rights Reserved.
Travailler avec des données:Le mode traditionnel du HTML (page)
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
data data
Persistence Solutions:
Hibernate
JDOs
EJB 3
Others…
2008 Adobe Systems Incorporated. All Rights Reserved.
Le modèle de la RIA
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
data data data
2008 Adobe Systems Incorporated. All Rights Reserved.
L’approche RPC
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
data
RPC
Services
data
2008 Adobe Systems Incorporated. All Rights Reserved.
L’approche de LiveCycle Data Services
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
data
Data
Service
data
2008 Adobe Systems Incorporated. All Rights Reserved.
L’approche de LiveCycle Data Services
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
data data
JDBC
Object
Hibernate
ColdFusion
Data
Service
Custom
2008 Adobe Systems Incorporated. All Rights Reserved.
Data Services
56
LiveCycle Data Services
Data
ServiceDAO
Object
Adapter
Hibernate
Adapter
JDBC
Adapter
Hibernate
RDBMS
CFC
Adapter ColdFusion
Endpoint
Client A
Client B
Client C
2008 Adobe Systems Incorporated. All Rights Reserved.
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.
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="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2005/mxml" creationComplete="initApp()">
<mx:Script>
public var ds:DataService;
[Bindable]public var contacts:ArrayCollection;
public function initApp() {
contacts = new ArrayCollection();
ds = new DataService("contact");
ds.fill(contacts);
}
</mx:Script>
<mx:DataGrid dataProvider="{contacts}" editable="true“/>
</mx:Application>
2008 Adobe Systems Incorporated. All Rights Reserved. 60
Data management-confis.xml
<destination id="contact">
<adapter ref="java-dao" />
<properties>
<metadata><identity property="contactId"/>
</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>
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;
}
}
2006 Adobe Systems Incorporated. All Rights Reserved. 6262
Clustering
2008 Adobe Systems Incorporated. All Rights Reserved.
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.
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
2006 Adobe Systems Incorporated. All Rights Reserved. 6565
Sécurité
2008 Adobe Systems Incorporated. All Rights Reserved.
Glossaire
66
ChannelMSG
MSG
Endpoint
Destination
Channel Endpoint
Destination
Destination
Destination
Destination
https://monserveur:443/messagebroker/amfsecure
2008 Adobe Systems Incorporated. All Rights Reserved.
Securiser le canal RTMP
<channel-definition id="my-rtmps“ class="mx.messaging.channels.SecureRTMPChannel">
<endpoint uri="rtmps://{server.name}:2099“ class="flex.messaging.endpoints.SecureRTMPEndpoint"/>
<properties>
<idle-timeout-minutes>30</idle-timeout-minutes>
<keystore-file>C:/somedir/flex/dataservices/apps/j2ee/dev/WEBINF/flex/keys/server.keystore</keystore-file>
<keystore-password>password</keystore-password>
</properties>
</channel-definition>
2008 Adobe Systems Incorporated. All Rights Reserved.
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.
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.
Sécuriser des endpoints via JAAS
Par les contraintes de sécurité web basée sur JAAS<destination id=“sampleJaasService">
……………………..
<security>
<security-constraint>
<auth-method>Custom</auth-method>
<roles>
<role>roDestUser</role>
</roles>
</security-constraint>
</security>
</destination>
2008 Adobe Systems Incorporated. All Rights Reserved.
Invocation de services sécurisés
Sécurisation de la communication Flex <-> LCDS :var employeeHTTP:HTTPService = new HTTPService();
employeeHTTP.destination = "SecureDest";
employeeHTTP.setCredentials("myUserName", "myPassword");
empoyeeHTTP.send({param1: 'foo'});
Sécurisation d’un proxy:<destination id="samplesProxy">
<channels>
<channel ref="samples-amf"/>
</channels>
<properties>
<url>http://someserver/SecureService.jsp</url>
<remote-username>johndoe</remote-username>
<remote-password>opensaysme</remote-password>
</properties>
</destination>
2006 Adobe Systems Incorporated. All Rights Reserved. 7272
Les bonusGénération de PDF, invocation de LiveCycle ES, AIR…
2006 Adobe Systems Incorporated. All Rights Reserved. 7373
Conclusion
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: [email protected]
Michael Chaize: [email protected]
2008 Adobe Systems Incorporated. All Rights Reserved.
Le QUIZZ !!!
75
Que doit-on modifier si l’on souhaite utiliser un autre canal de communication pour le RemoteObject entre l’application Flex et LCDS ?
2008 Adobe Systems Incorporated. All Rights Reserved.
Le QUIZZ !!!
76
Que doit-on mettre en place pour accéder à un webService externe à l’entreprise?
2008 Adobe Systems Incorporated. All Rights Reserved.
Le QUIZZ !!!
77
Comment Adobe a implémenté le support du clustering dans LCDS ?
2008 Adobe Systems Incorporated. All Rights Reserved.