Download - Ejb advanced2010
09/12/2010
1
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
09/12/2010
2
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 ?
09/12/2010
3
Les propriétés ACID
Atomicité
Consistence
Isolation
Durabilité
Les modèles de transactions
Flat
Nested
Flexible
Distributed
...
09/12/2010
5
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)
09/12/2010
6
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
09/12/2010
8
Gérer la visibilité des transactions ?
Les attributs de transaction (Container
managed)
09/12/2010
11
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
09/12/2010
12
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
09/12/2010
14
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 ?
09/12/2010
15
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 ?
09/12/2010
16
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)
09/12/2010
17
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)
09/12/2010
18
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
Subject
PrincipalPrincipal
Principal
Public
Credential
Public
Credential
Public
Credential
Private
Credential
Private
Credential
Private
Credential
09/12/2010
19
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
09/12/2010
20
Différents login modules
Pluggable Authentication
Login Modules
Application
Login Context
JndiLogin
Module
NTLogin
Module
UnixLogin
Module
Krb5Login
Module
MyLogin
Module
LDAP Server
DbLogin
Module
NT
Authentication
Unix
Authentication
Kerberos
AuthenticationRDBMS
Biometric
Authentication
Le fonctionnement de JAAS
09/12/2010
22
Le CallBackHandler
Les autorisations
Autorisations programmées
Codées dans les Beans
Autorisations déclarées
Le container prend en charge le contrôle des autorisations
09/12/2010
23
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
09/12/2010
24
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
09/12/2010
25
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)
09/12/2010
26
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
09/12/2010
27
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é
09/12/2010
28
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
09/12/2010
29
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
09/12/2010
30
Timer Service API
javax.ejb.TimedObject
javax.ejb.Timer
javax.ejb.TimerHandle
javax.ejb.TimerService
TimerService
Permet de créer un Timer
09/12/2010
32
EJB et Timer
Portable
Facile à mettre en oeuvre
Granularité des services
Limitations dans la définition des timers
L’exemple Duke Bank
09/12/2010
33
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
09/12/2010
38
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
09/12/2010
39
That’s all folks
http://www.youtube.com/watch?v=gBzJGckMYO4