Vous êtes sur la page 1sur 56

1

Enterprise JavaBeans 3.1 Java EE6


EJB : Les fondamentaux

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

Enterprise Java Bean


Vue du ciel
Les EJB : facilitent la cration d'applications distribues pour les entreprises. Permettent aux dveloppeurs de se concentrer sur les traitements orients mtiers Sont rutilisables Sont assemblables Soccupent du traitement mtier de lapplication

Enterprise Java Bean


Vue du ciel
Les EJB : composant serveur qui peut tre dploy Dans un serveur dapplication Java EE Composant serveur => non visuel Le conteneur dEJB soccupe de certains traitements
Cycle de vie du bean Accs au bean Scurit daccs Accs concurrents Persistance des donnes, Transactions,

Les clients d'un Bean lui parlent au travers d'une interface Le conteneur dEJB est lintermdiaire des communications

Enterprise Java Bean


Dans le code
Physiquement, un EJB est Au moins deux interfaces + une classe regroupes dans un module qui contient un descripteur de dploiement particulier. EJB 2.0 : on doit tout crire EJB 3.0 : trs simplifi grce aux annotations de code Les interfaces et le Bean suivent la spcification EJB La spcification EJB requiert que le Bean expose certaines mthodes Redfinition de ces mthodes obligatoire pour tous les EJB

Enterprise Java Bean


Fonctionnement
Le client d'un Bean peut tre
Une servlet Une applet Une application classique Un autre Bean

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

Modle flexible et extensible

Les 3 diffrents types dEJB


Beans de session (Session Bean) Traitent les requtes
Sans tat (Stateless) Traiter les requtes de plusieurs clients Avec tat (Stateful) Echanges avec un seul client Conserve les donnes entre deux changes avec le client

Beans entits (Entity Beans) Assurent la persistance des donnes


Persistance gre par le conteneur (CMP : Container Managed Persistence) Persistance gre par le bean (BMP : Bean managed Persistence)

Beans orients message (Message-driven beans)


Depuis EJB 3.0

10

Les 3 diffrents types dEJB


1- Session Bean
Beans de session (Session Bean)
Modlisent un traitement (business process) Correspondent des verbes, des actions ex : gestion de compte bancaire, affichage de catalogue de produit, vrifieur de donnes bancaires, gestionnaire de prix

Les actions impliquent des calculs, des accs une base de donnes, consulter un service externe (appel tlphonique, etc.)
Souvent clients d'autres Beans

11

Les 3 diffrents types dEJB


2- Entity Bean
Beans entits (Entity Beans)
Modlisent des donnes
Correspondent des noms

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.

Serveurs pour des Beans Session le plus souvent


Servent de proxy entre la logique mtier et les base de donnes Mapping base de donne relationnelle/Objet facilit par EJB 2.0

12

Les 3 diffrents types dEJB


1- Session Bean vs. 2- Entity Bean

Session Bean
Gestion de compte Vrificateur de CB

Entity Bean
Compte bancaire Carte de crdit

Systme d'entre gestion de commandes


Gestion de catalogue Gestionnaire d'enchres Gestion d'achats

Commande, ligne de commande


Produits Enchre, Produit Commande, Produit, ligne de commande

13

Les 3 diffrents types dEJB


3- Message-driven beans
Beans orients message (Message-driven beans) Introduits partir de la norme EJB 2.0, nous sommes aujourdhui en 3.0 Similaire aux Session bean : reprsentent des verbes ou des actions, On les invoque en leur envoyant des messages,
Ex : message pour dclencher des transactions boursires, des autorisations d'achat par CB,

Souvent clients d'autres beans

14

Les 3 diffrents types dEJB


Pourquoi 3 diffrents types dEJB ?
Pas d'Entity Beans dans les solutions Microsoft par exemple Nombreuses compagnies impliques dans les standards EJB/J2EE Leurs clients ont des besoins varis, + Solution propose flexible - Mais plus complexe, - Standard EJB plus difficile apprendre, - Risque de mauvaise utilisation mais Rponse : On est gagnant sur le long terme !

15

Clients interagissant avec un serveur base d'EJBs

16

Quelles stratgies ?

17

Les objets distribus


Quelles stratgies en Java ?
RMI : Remote Method Invocation
Simple dutilisation Seulement pour Java

CORBA : Common Object Request Broker Architecture


Architecture standard dobjets distribus

IIOP : Internet Inter-ORB Protocol


Protocole de communication de CORBA (communications par TCP/IP) Programmes distribus / diffrents langages de programmation Java IDL = CORBA/IIOP pour Java RMI-IIOP
RMI CORBA/IIOP -> Simple dutilisation -> Interoprabilit entre les langages

18

Les objets distribus


RMI-IIOP
Machine client Client Machine serveur Serveur
= Objet distribu
Remote Interface Remote Interface

stub

~ ~

tie

IIOP Runtime

IIOP Runtime

JVM

JVM

RMI/IIOP

Internet

19

Les objets distribus


et le middleware
Lorsqu'une application devient importante, des besoins rcurrents apparaissent : scurit, transactions, etc C'est l qu'intervient le middleware ! Deux approches 1. Middleware explicite, 2. Middleware implicite

20

Les objets distribus


Middleware explicite
Machine client Client Machine serveur Serveur
= Objet distribu
Remote Interface Remote Interface API transaction

Service Transaction

API scurit

Service Scurit
Driver Base de donnes

stub

~ ~

tie

API Base de donnes

IIOP Runtime

IIOP Runtime

JVM

JVM

RMI/IIOP

Internet

21

Les objets distribus


Middleware explicite
Machine client Client Machine serveur Serveur
= Objet distribu
Remote Interface Remote Interface API transaction

Service Transaction

API scurit

Service Scurit
Driver Base de donnes

stub

~ ~

tie

API Base de donnes

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

Les objets distribus


Middleware explicite
Machine client Client Machine serveur Serveur
= Objet distribu
Remote Interface Remote Interface API transaction

Service Transaction

API scurit

Service Scurit
Driver Base de donnes

stub

~ ~

tie

API Base de donnes

Difficile crire, IIOP Runtime IIOP Runtime Difficile maintenir, JVM JVM Code dpendant des API du vendeur de middleware
RMI/IIOP

Internet

23

Les objets distribus


Middleware implicite
Machine client Machine serveur
Serveur
= Objet distribu
API transaction

Client

Remote Interface

Service Transaction

API scurit

Intercepteur de requte
Remote Interface Remote Interface API Base de donnes

Service Scurit
Driver Base de donnes

stub IIOP Runtime

~ ~

tie IIOP Runtime

JVM

JVM

RMI/IIOP

Internet

24

Les objets distribus


Middleware implicite
Machine client Machine serveur
Serveur
= Objet distribu
API transaction

Client

Remote Interface

Service Transaction

API scurit

Intercepteur de requte
Remote Interface Remote Interface API Base de donnes

Service Scurit
Driver Base de donnes

stub IIOP Runtime

~ ~

tie IIOP Runtime

JVM

JVM
Les besoins sont dcrits dans un fichier descripteur Lintercepteur de requte sait quoi faire

RMI/IIOP

Internet

25

Les EJB : des objets distribus


RMI-IIOP au cur des EJBs
Machine client Machine serveur
API transaction

EJB
Client

EJB
API scurit

Service Transaction

Conteneur dEJB intercepteur


Remote Interface Remote Interface API Base de donnes

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

EJB et SOA (Service Oriented Architecture)


Une application = ensemble de services, Un service = ensemble de composants, Un composant = ensemble de classes, Les services peuvent tourner sur des nuds diffrents (des CPUs diffrents) et donc former une architecture distribue Avantage :
souplesse, mise jour, etc Le code ne change pas quon soit en mono-CPU ou en distribu.

27

EJB et SOA (Service Oriented Architecture)


SOA = un paradigme de conception Service = indpendant, faiblement coupl aux autres Les Web Service = un exemple de SOA, mais il y en a dautres.

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

Constitution dun EJB


EJB Object
Les clients n'invoquent jamais directement les mthodes de la classe du Bean
Les appels de mthodes (requtes) sont intercepts par le Conteneur, qui assure le traitement middleware implicite, Une fois ce traitement effectu, le container appelle les mthodes de la classe du Bean

Le dveloppeur de composant se concentre sur la logique.

30

Constitution dun EJB


EJB Object
Que se passe-t-il lors de l'interception ?
Prise en compte des transactions, Scurit :
le client est-il autoris ?

Gestion des ressources + cycle de vie des composants :


threads, sockets, connexions DB, pooling des instances (mmoire),

Persistance, Accs distant aux objets, Threading des clients en attente, Clustering, Monitoring :
statistiques, graphiques temps rel du comportement du systme

31

Constitution dun EJB


EJB Object

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

Constitution dun EJB


gnration du code
Code simple EJ Bean Gnration du code partir du Bean Le code gnr fournit
Transactions, Securit, Persistance, Accs Distant, gestion des ressources, etc. Code gnr

EJB Container

EJ Bean

Fournit les services au container

EJB Container

EJB Server

33

Constitution dun EJB


gnration du code
EJ Bean

Utilisation du descripteur de dploiement


(fourni par l'auteur du Bean)

Paramtres de dploiement : EJB Container


scurit, mappings objets/BD relationelle, etc.

EJ Bean

Gnration du code pour intgrer le bean dans le container, ajout du plumbing


persistance, scurit, etc.

EJB Container

EJB Server

34

Constitution dun EJB


linterface distante (remote)

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 :

l'interface distante (Remote)

35

Constitution dun EJB


linterface distante (remote)
Traitements proposs par le bean

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 !

Presque rien faire pour le dveloppeur de bean !

36

Constitution d'un EJB


Java RMI-IIOP et EJB Objects

Javax.ejb.EJBObject drive de java.rmi.Remote,


java.rmi.Remote -> appelable distance depuis une autre JVM

EJB Objects = RMI-IIOP + EJB compatibles


RMI-IIOP dfinit entre autre :
convention de passage de paramtres valeurs de retour lors d'appels de mthode distante,

Toutes les mthodes doivent dclarer throws RemoteException;

37

Constitution d'un EJB


Home Object

?
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

Constitution d'un EJB


Home Object

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

Constitution d'un EJB


Home Object

Comme les EJB Objects, les Home Objects sont gnrs par le container Contiennent du code spcifique, Assurent le load-balancing, etc

40

Constitution d'un EJB


Home Object

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

Constitution dun EJB


linterface home
Cycle de vie du bean

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

Constitution d'un EJB


la cration de bean et l'appel de mthode distante cotent cher
Machine client Machine serveur
API transaction

EJB
Client

EJB
API scurit

Service Transaction

Conteneur dEJB intercepteur


Remote Interface Remote Interface API Base de donnes

Service Scurit
Driver Base de donnes

stub IIOP Runtime

tie IIOP Runtime

JVM

JVM

RMI/IIOP

Internet

43

Constitution d'un EJB


la cration de bean et l'appel de mthode distante cotent cher
Machine client Machine serveur
API transaction

EJB
Client

EJB
API scurit

Service Transaction

Conteneur dEJB intercepteur


Remote Interface Remote Interface API Base de donnes

Service Scurit
Driver Base de donnes

stub IIOP Runtime

tie IIOP Runtime

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

Constitution d'un EJB


la cration de bean et l'appel de mthode distante cotent cher
Machine client Machine serveur
API transaction

EJB
Client

EJB
API scurit

Service Transaction

Conteneur dEJB intercepteur


Remote Interface Remote Interface API Base de donnes

Service Scurit
Driver Base de donnes

stub IIOP Runtime

tie IIOP Runtime

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

Constitution d'un EJB


la cration de bean et l'appel de mthode distante cotent cher
Machine client Machine serveur
API transaction

EJB
Client

EJB
API scurit

Service Transaction

Conteneur dEJB intercepteur


Remote Interface Remote Interface API Base de donnes

Service Scurit
Driver Base de donnes

stub IIOP Runtime

tie IIOP Runtime

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

Constitution d'un EJB


la cration de bean et l'appel de mthode distante cotent cher
Machine client Machine serveur
API transaction

EJB
Client

EJB
API scurit

Service Transaction

Conteneur dEJB intercepteur


Remote Interface Remote Interface API Base de donnes

Service Scurit
Driver Base de donnes

stub IIOP Runtime

tie IIOP Runtime

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

Constitution d'un EJB :


les interfaces locales
Nouveau dans EJB 2.0 : les interfaces locales. Introduit la notion de Local Object, en remplacement de EJB Object Les Local Objects implmentent une interface locale au lieu d'une interface distante Exemple d'appel de mthode distante
1. 2. 3. Le client appelle le Local Object, Le Local Object appelle le middleware puis la mthode du bean La valeur de retour est renvoye au Local Object, puis au client

48

Constitution d'un EJB :


les interfaces locales
Pour l'appel distant de mthodes, le dveloppeur peut fournir une interface locale, qui sera implmente par le container en tant que Local Object
A distinguer du cas "normal" (EJB 1.1) ou on a interface distante implmente par EJB Object

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

Constitution d'un EJB :


les interfaces locales
Les interfaces locales ne tournent que si les EJB sont dans le mme processus (mme container), Attention, paramtres et valeurs de retour (lors des appels de mthodes) se passent maintenant par rfrence
Toujours par valeur dans le cas d'appels distants! Plus performant mais smantique diffrente.

Difficile de passer d'une implmentation locale une implmentation classique


Aurait pu tre fait dans les descripteurs (weblogic)

50

Constitution d'un EJB :


les descripteurs de dploiement
Pour informer le container des besoins middleware, on utilise un descripteur de dploiement (XML) Standardis, A l'extrieur de l'implmentation du bean. Attention si on les crit la main! Outils d'aide au dploiement : IDEs (Jbuilder, Visual Cafe), outils spcifiques (Borland Application Server, Weblogic 6.1) Descripteurs peuvent tre modifis aprs le dploiement.

51

Constitution d'un EJB :


les descripteurs de dploiement
Descripteurs spcifiques au serveur d'application Chaque vendeur ajoute des trucs en plus : load-balancing, persistance complexe, clustering, monitoring Dans des fichiers spcifiques (inprise-ejb.xml avec Borland)

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

Descripteur de dploiement standard Descripteurs spcifiques au vendeur Fichier .jar de l'EJB

54

55

Quest-ce qui a chang ?


Pas grand-chose sur le fond, les EJBs adressent toujours le mme problme, Beaucoup sur la forme.
Pour les Session Beans et pour les Message Driven Beans : modle POJO (Plain Old Java Object) Les dveloppeurs veulent crire du Java, pas du XML et pas 50 fichiers pour faire HelloWorld ! Pour les Entity Beans, on utilisera les annotations de code pour indiquer le mapping entre la classe java et les donnes dans la BD

Le modle EJB 3.0 utilise beaucoup les annotations de code introduites avec java 1.5

56