Professional Documents
Culture Documents
Maxime Lefranois (maxime.lefrancois@inria.fr), 2011 Bas sur le cours de Michel Buffa (buffa@unice.fr), UNSA 2002
Plan du cours
Introduction gnrale EJB : Les fondamentaux Introduction aux Session Beans Introduction aux Entity Beans Introduction aux Message-Driven Beans Concepts avancs sur la persistance Relations avec les Entity Beans Gestion des transactions
Plan du chapitre
Les EJBs Les objets distribus Le modle EJB 2.X Le modle EJB 3.0 fait le mnage
Les clients d'un Bean lui parlent au travers d'une interface Le conteneur dEJB est lintermdiaire des communications
On peut dcomposer une application en un graphe de tches/sous-tches Exemple : achat d'un CD partir du code-barre
Scanner (qui a une JVM embarque) client d'un Bean sur le Serveur Ce Bean est client d'autres Beans :
gestion de catalogue, de commandes, de gestion de transaction VISA, etc
10
Les actions impliquent des calculs, des accs une base de donnes, consulter un service externe (appel tlphonique, etc.)
Souvent clients d'autres Beans
11
Ce sont des objets java qui cachent des donnes d'une base de donnes Ce sont des objets persistants
Ex : un Bean Personne, un Bean compte bancaire, un Bean produit, un Bean commande.
12
Session Bean
Gestion de compte Vrificateur de CB
Entity Bean
Compte bancaire Carte de crdit
13
14
15
16
Quelles stratgies ?
17
18
stub
~ ~
tie
IIOP Runtime
IIOP Runtime
JVM
JVM
RMI/IIOP
Internet
19
20
Service Transaction
API scurit
Service Scurit
Driver Base de donnes
stub
~ ~
tie
IIOP Runtime
IIOP Runtime
JVM
JVM
RMI/IIOP
Internet
21
Service Transaction
API scurit
Service Scurit
Driver Base de donnes
stub
~ ~
tie
Exemple : transfert d'un compte bancaire vers un autre : IIOP Runtime IIOP Runtime transfert(Compte c1, Compte c2, long montant) 1.Appel vers l'API middleware qui fait une vrification de scurit, JVM JVM
2.Appel vers l'API de transaction pour dmarrer une transaction, 3.Appel vers l'API pour lire des lignes dans des tables d'une BD, 4.Faire le calcul : enlever de l'argent d'un compte pour le mettre dans l'autre 5.Appeler l'API pour mettre jour les lignes dans les tables, Internet 6.Appeler l'API de transaction pour terminer la transaction. RMI/IIOP
22
Service Transaction
API scurit
Service Scurit
Driver Base de donnes
stub
~ ~
tie
Difficile crire, IIOP Runtime IIOP Runtime Difficile maintenir, JVM JVM Code dpendant des API du vendeur de middleware
RMI/IIOP
Internet
23
Client
Remote Interface
Service Transaction
API scurit
Intercepteur de requte
Remote Interface Remote Interface API Base de donnes
Service Scurit
Driver Base de donnes
~ ~
JVM
JVM
RMI/IIOP
Internet
24
Client
Remote Interface
Service Transaction
API scurit
Intercepteur de requte
Remote Interface Remote Interface API Base de donnes
Service Scurit
Driver Base de donnes
~ ~
JVM
JVM
Les besoins sont dcrits dans un fichier descripteur Lintercepteur de requte sait quoi faire
RMI/IIOP
Internet
25
EJB
Client
EJB
API scurit
Service Transaction
Service Scurit
Driver Base de donnes
stub
~ ~
tie
middleware implicite IIOP Runtime IIOP Runtime maisJVM pour descendre au bas niveau, Explicite API JVM
La plupart du temps le dveloppeur demeure au niveau implicite, Mais il peut utiliser des APIs de J2EE pour contrler manuellement les transactions, Internet la scurit, etc. (travail plus complexe)
RMI/IIOP
26
27
Exemples :
des services fait dEJBs, des services du Robotic Studio de Microsoft, etc.
28
Avant les EJB 3.0 taient les EJB 2.x et ctait puissant mais trop compliqu !
29
30
Persistance, Accs distant aux objets, Threading des clients en attente, Clustering, Monitoring :
statistiques, graphiques temps rel du comportement du systme
31
Le conteneur gnre une couche d'indirection entre le client et le bean matrialise par un EJB Object
L'EJB Object contient du code spcifique au container (vendeurdpendant) Il appelle les mthodes de la classe du Bean, Il est gnr par le container ! Chaque container est livr avec des outils pour gnrer les EJB Object pour chaque Bean.
32
EJB Container
EJ Bean
EJB Container
EJB Server
33
EJ Bean
EJB Container
EJB Server
34
Les clients invoquent les mthodes des EJB Objects, L'outil qui gnre l'EJB Object doit cloner les mthodes du bean, Comment ?
une interface fournie par le programmeur du bean :
35
tend linterface
javax.ejb.EJBObject
Les EJB Objects doivent cloner toutes les mthodes que le bean expose, Le dveloppeur rajoute les signatures des mthodes qu'il souhaite exposer, Qui implmentera cette interface ?
L'EJB Object gnr par le container !
36
37
?
Nous avons vu comment les clients appelaient les mthodes d'un Bean : via l'EJB Object. Mais comment obtiennent-ils une rfrence sur l'EJB Object ? En effet : pas d'instanciations lorsque on travaille avec des objets distants ! Solution : le client demande la rfrence une fabrique d'EJB Objects (EJB Object Factory) Design pattern!
38
La spcification EJB appelle cette factory un Home Object. Responsabilits du Home Object
Crer les EJB Objects, Trouver les EJB Objects existants (Entity beans seulement) Supprimer les EJB Objects.
39
Comme les EJB Objects, les Home Objects sont gnrs par le container Contiennent du code spcifique, Assurent le load-balancing, etc
40
Comment un Home object sait de quelle manire le client veut initialiser l'EJB Object ? Rappel : au lieu d'appeler un constructeur, on demande au Home object de retourner une rfrence. Comme pour les constructeurs, il est possible de passer des paramtres d'initialisation. Comme pour les EJB Objects, le dveloppeur du bean doit spcifier une interface Home
41
tend linterface
javax.ejb.EJBHome
L'interface Home dfinit Les mthodes pour crer, dtruire et localiser les EJB Objects Le Home Object (gnr par le container) implmente cette interface. L'interface fournie par le dveloppeur drive de javax.ejb.EJBHome Javax.ejb.EJBHome drive de java.rmi.Remote Les Home objects sont aussi des objets distants, compatibles RMI-IIOP
42
EJB
Client
EJB
API scurit
Service Transaction
Service Scurit
Driver Base de donnes
JVM
JVM
RMI/IIOP
Internet
43
EJB
Client
EJB
API scurit
Service Transaction
Service Scurit
Driver Base de donnes
JVM
1. Le client appelle un stub (souche) JVM 2. Le stub encode les paramtres dans un format capable de voyager sur le rseau
Internet
RMI/IIOP
44
EJB
Client
EJB
API scurit
Service Transaction
Service Scurit
Driver Base de donnes
JVM
RMI/IIOP
Internet
3. Le stub ouvre une connexion sur le tie JVM (attache) 4. Le tie dcode les paramtres, 5. Le tie appelle l'EJB Object,
45
EJB
Client
EJB
API scurit
Service Transaction
Service Scurit
Driver Base de donnes
JVM
RMI/IIOP
Internet
6. L'EJB Object effectue les JVM appels middleware, 7. L'EJB Object appelle la mthode du bean, 8. Le Bean fait son travail,
46
EJB
Client
EJB
API scurit
Service Transaction
Service Scurit
Driver Base de donnes
JVM
RMI/IIOP
Internet
9. On fait le chemin inverse pour retourner JVM la valeur de retour vers le client ! 10. Sans compter le chargement dynamique des classes ncessaires !
47
48
Pour la cration/localisation de beans, le dveloppeur peut fournir une interface home interface locale, qui sera implmente par le container en tant que Home Object local
A comparer avec Home Interface implmente par le container en tant que Home Object
49
50
51
52
Dploiement
un fichier .jar
53
Rsum
Enterprise Bean class -> 3 diffrents types Fonctionnement distribu Interface distante (remote interface)/Interface locale EJB Object / Local Object Home interface / Local Home interface Home Object / Local Home Object
54
55
Le modle EJB 3.0 utilise beaucoup les annotations de code introduites avec java 1.5
56