1. 09/12/2010
EJB avancés
Objectif : Etudier la configuration du contexte
d’exécution
Sa mise en œuvre implicite
Et explicite
Transactions
Sécurité
Timer
Récapitulatif
Performances
Les transactions
Concept fondamental dans les applications distribuées
Indispensables pour une exécution sûre des services
Difficiles à mettre en œuvre
Problèmes de performances
1
2. 09/12/2010
Atomicité
Garantir une exécution tout ou rien
Difficile sur un système centralisé
Encore plus dans une architecture distribuée
Nombreuses possibilités d'erreurs
Concurrence d'accès
Cause de nombreux problèmes
Comment garantir des exécutions correctes ?
Et des performances acceptables ?
2
3. 09/12/2010
Les propriétés ACID
Atomicité
Consistence
Isolation
Durabilité
Les modèles de transactions
Flat
Nested
Flexible
Distributed
...
3
5. 09/12/2010
Distributed Transaction
Java Transaction Service
Fournit l'interface avec des moniteurs transactionnels
Communication avec les moniteurs (XAResource)
Communication avec les serveurs d'application
(TransactionManager)
Communication avec les clients (UserTransaction)
5
6. 09/12/2010
Transactions et EJB
Container Managed
Le container se charge de tout
Approche déclarative
Bean Managed
Transaction gérée par programme dans les beans
Client Controlled
Transaction programmée du coté client
Bean Managed
6
11. 09/12/2010
Utilisation dans un client
Encore de l'injection
L'isolation
Garantir la cohérence des accès concurrent
Sérialisabilité (les exécutions concurrentes sont équivalentes à
des exécutions en série)
Problèmes classiques
Lecture impropre
Perte de mise à jour
Utilisations de verrous mais
Deadlock
Pénalités sur les performances
11
12. 09/12/2010
Les niveaux d'isolation
READ UNCOMMITED
Pas d'isolation – on voit tout – on ne tient pas compte des
verrous en lecture
READ COMMITED
On ne lit que des résultats commités – mais lectures non
répétables
REPEATABLE READ
Les lectures sont répétables mais lecture fantomes (nouvelles
données en cours de transaction)
SERIALIZABLE
Mise en oeuvre dépendante des serveurs d'application et
des base de données
Container Managed Concurrency
12
14. 09/12/2010
Contrôle optimiste ou pessimiste
Pessimiste : on évite les problèmes à priori
Problèmes de performance
Optimiste : on vérifie a posteriori qu'il n'y en a pas eu
Meilleure performance
Risque de perdre du travail
Conclusion
Les transactions sont faciles à mettre en oeuvre
Mais difficile à contrôler
Quelles garanties on veut avoir ?
Quels scénarios sont les plus probables ?
Quels compromis entre performances et sureté de l'exécution
sont acceptables ?
14
15. 09/12/2010
La sécurité
Aspect fondamental des applications distribuées
Quels sont les risques ? Quels sont les parties critiques
de l'application
Les fonctions
Authentification
Est-tu bien celui que tu prétends être ?
Autorisation
As-tu bien le droit de faire ça ?
Intégrité des données
Les données peuvent elles être modifiées
Confidentialité des données
As-tu le droit de lire ces données ?
15
16. 09/12/2010
Sécurité des applications Web
Premier point d'interactions avec les utilisateurs
Dépend des specs servlet et J2EE
3 modes d'authentification
HTTP Basic and Digest
Form Based
HTTPS Client authentification (certificat)
16
17. 09/12/2010
Autorisation dans les applications Web
Déclarative
Règles de sécurité dans le descripteur
Programmée
Contrôles de sécurité dans les servlets
Contexte de sécurité
Confidentialité/Intégrité
Basé sur un transport sécurisé (HTTPS)
Contraintes dans le descripteur de déploiement
(CONFIDENTIAL, INTEGRAL, NONE)
17
18. 09/12/2010
Sécurité dans les EJB
Authentification basée sur JAAS
Java Authentication and autorisation Service
Subject
Container pour principal et credentials
The Subject in Detail
Principal
Principal
Principal
Public
Public
Credential
Subject Public
Credential
Credential
Private
Private
Credential
Private
Credential
Credential
18
19. 09/12/2010
Principal
Identifie un Subject
Un Subject = plusieurs principals
1. package java.security;
2. public interface Principal {
3. ...
4. public String getName();
5. }
Role, User, Group
19
20. 09/12/2010
Différents login modules
Pluggable Authentication
Application
Login Context
Login Modules
NTLogin UnixLogin MyLogin
Module Module Module
JndiLogin Krb5Login DbLogin
Module Module Module
NT Unix Biometric
Authentication Authentication Authentication
Kerberos
LDAP Server RDBMS
Authentication
Le fonctionnement de JAAS
20
23. 09/12/2010
Les roles
Un rôle = une collection d'identités
Employé
Etudiant
Administrateurs
...
La déclaration de la sécurité
Les roles utilisés
Le rôle par défaut
Le rôle autorisé
Tout le monde peut
le faire
23
24. 09/12/2010
Les annotations
@RolesAllowed
@PermitAll
@DenyAll
La définition au niveau de la méthode surcharge la
définition au niveau de la classe
Progagation de la sécurité
@RunAs(''admin'')
Surcharge le rôle du contexte de l'appelant
La méthode va s'exécuter avec le rôle admin
24
25. 09/12/2010
La propagation de la sécurité
L'identité et les rôles sont transmis par le contexte
L'identité de l'appelant
Vérification de son rôle
Autre exemple (from Oracle)
25
26. 09/12/2010
Description par fichier de configuration
Declaratif ou programmée
Déclaratif :
Découplage du code métier et de la définition de la sécurité
Mais .... c'est insuffisant
Programmée
Complique le code
Mais permet un contrôle au niveau des instances
26
27. 09/12/2010
Sécurité et WebServices
Comment sécuriser des appels de Web Services de bout
en bout
XML Signature et XML Encryption
Permettent le transfert de documents XML entre des
noeuds inconnus
Les parties cryptées ne seront lisibles que par les noeuds
qui connaissent les clés.
Tout le message n'a pas besoin d'être crypté/signé
27
28. 09/12/2010
SAML
Security Assertion Markup Language
Assertion = Security token
Utilisées par les PEP (Policy Enforcement Point)
SAML Authority : emets les token
Token = le sujet est authentifié par moi ou j'autorise le sujet à
faire A et B ou le sujet a le rôle X
Le PEP doit faire confiance à l'autorité
WS-Security
The security context is in the message
28
29. 09/12/2010
Conclusion sur la sécurité
Encore difficile à mettre en oeuvre
Encore plus dans un environnement distribué
Nombreux standards
Ça progresse dans le domaine des Web Services
EJB Timer
Comment déclencher des actions à des instants
particuliers
Opérations de maintenance
Batch processing
Deadline dans des workflows
Comment permettre d'appeler des services à des
instants donnés
29
30. 09/12/2010
Timer Service API
javax.ejb.TimedObject
javax.ejb.Timer
javax.ejb.TimerHandle
javax.ejb.TimerService
TimerService
Permet de créer un Timer
30
32. 09/12/2010
EJB et Timer
Portable
Facile à mettre en oeuvre
Granularité des services
Limitations dans la définition des timers
L’exemple Duke Bank
32
33. 09/12/2010
La structure de l’application
Les Session Beans
AccountController
CustomerController
TxController
Implantation des méthodes métiers de l’application
Facade pour les clients
Masquent la représentation du modèle
33
38. 09/12/2010
EJB et Web
CustomerBean
Composant représentant le client dans la vue
Performance
http://java.sun.com/developer/technicalArticles/ebeans/ej
b_30/
Conception des applications
Un appel par cas d’utilisation
Stateful vs Stateless
Gestion de la persistence
Gestion des différents niveaux de cache
Consistence vs availability
38
39. 09/12/2010
That’s all folks
http://www.youtube.com/watch?v=gBzJGckMYO4
39