Vous êtes sur la page 1sur 16

Introduction!

: volution des architectures client-serveur

! Schma de base d"une application

Composants logiciels
Exemples : Java Beans, Enterprise Java Beans

" Accs, depuis des clients, des donnes permanentes (SGBD), avec traitement spcifique
client

client

traitement utilisant donnes dans SGBD

Sacha Krakowiak
Universit Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/~krakowia

client

Ralisation initiale clients lgers (terminaux alphanumrique) imbrication du traitement et de l"accs aux donnes

2005-2006, S. Krakowiak

volution des architectures client-serveur (2)

volution des architectures client-serveur (3)

Architecture 2 niveaux (2-tier)


Rserve des cas simples o tout ou partie du traitement peut tre fait chez le client

! Architecture 3 niveaux (3-tier)

applications existantes

Le traitement est rparti entre client et serveur

client Interface homme-machine + traitement Traitement + accs aux donnes

serveur de traitement

client

SGBD
SGBD serveur Ralisation de l"interface d"accs Ralisation des fonctions spcifiques de l"application Conservation des donnes permanentes

serveur de stockage

Limitations puissance de traitement sur le poste client partage des donnes capacit de croissance facilit d"volution

" Intrt potentiel # sparation des fonctions # interfaces bien dfinies, normalisation, ouverture # capacit d"volution et de croissance # rutilisation de l"existant

2005-2006, S. Krakowiak

2005-2006, S. Krakowiak

Variations sur les schmas d"architecture


Chaque tage peut tre rparti sur plusieurs machines (grappe)

Ralisation d"une application rpartie

bus messages Navigateur HTML serveur Web serveur de servlets traitement


RMI JDBC

!
application existante

Objectifs
" Facilit de dveloppement (donc cot rduit) " Capacit d"volution et de croissance " Ouverture (intgration, supports htrognes, etc)

SGBD

Solutions possibles de ralisation


" Les outils vus jusqu"ici sont utilisables! # Java RMI, CORBA, Bus messages " !mais doivent tre complts # construction modulaire facilitant l"volution et l"ouverture # services communs (pour ne pas rinventer la roue et se concentrer sur l"application spcifique) # outils de dveloppement (criture, assemblage) # outils de dploiement (mise en place des lments) # outils d"administration (observation, reconfiguration) " Les composants visent fournir ces complments

Exemples : (logiciel libre

Apache

Tomcat

JOnAS

MySQL

Rpond un besoin fort : la fourniture de pages Web dynamiques

Programme spcifique d"interface

IIOP

traitement

module accs SGBD

SQL SGBD

2005-2006, S. Krakowiak

2005-2006, S. Krakowiak

Plan de prsentation

Les limites de la programmation par objets


! Pas d"expression des ressources ncessaires

! Introduction aux composants logiciels


" Des objets aux composants " Notions d"architecture logicielle

" Seules sont dfinies les interfaces fournies, non celles requises

! Absence de vision globale de l"application


" les principaux concepts sont dfinis au niveau d"un objet individuel " pas de notion de description globale de l"architecture

! Un exemple de composants pour clients : Java Beans


" Principes " Applications

! Difficult d"volution
" consquence de l"absence de vision globale

! Un exemple de composants pour serveurs : Enterprise Java

Beans (EJB)
" Principes " Applications

! [pour certaines infrastructures] : absence de services (proprits non fonctionnelles)


" les services ncessaires doivent tre raliss la main (persistance, scurit, tolrance aux fautes, etc.)

! Un exemple d"intgration d"applications grande chelle: Web

! Absence d"outils d"administration (composition, dploiement) ! Conclusion


" charge importante pour le programmeur " incidence sur la qualit de l"application " une partie du cycle de vie n"est pas couverte

Services

2005-2006, S. Krakowiak

2005-2006, S. Krakowiak

Composants : dfinition

Composants : modle gnrique


proprits configurables interfaces spciales avec accs restreint

! Dfinition
" module logiciel autonome # unit de dploiement (installation sur diffrentes plates-formes) # unit de composition (combinaison avec d"autres composants)

! Proprits
" " " " spcifie explicitement la ou les interface(s) fournie(s) (attributs, mthodes) spcifie explicitement la ou les interface(s) requise(s) pour son excution peut tre configur capable de s"auto-dcrire

synchrone

synchrone

interface(s) fournie(s) mthodes, attributs


asynchrone

Composant

interfaces(s) requise(s) fournies par d"autres composants


asynchrone

! Intrt
" permettre la construction d"applications par composition de briques de base configurables " sparer les fonctions des fournisseur et d"assembleur (conditions pour le dveloppement d"une industrie des composants)

contraintes techniques interfaces de rappel # placement, scurit # accs transactionnel, persistance # interfaces fournies par le systme (bibliothques, etc.)
9 2005-2006, S. Krakowiak 10

2005-2006, S. Krakowiak

Composants : utilisation

Support logiciel pour composants

Composition hirarchique et encapsulation !!!!!!(composants construits, sous-composants) Interconnexion de composants !!!!!(connecteurs, ou objets de communication)
B A2 A1 A3
connecteur interfaces d"entre (fournies) composant lmentaire composant construit 2005-2006, S. Krakowiak
synchrone

Pour assurer leurs fonctions, les composants ont besoin d"un support logiciel. On distingue gnralement conteneurs et structures d"accueil

! Conteneur
" encapsulation d"un composant " prise en charge des services du systme
B2

A B1

# nommage, scurit, transactions, persistance, etc. " prise en charge partielle des relations entre composants (connecteurs) # invocations, vnements " techniques utilises : interposition, dlgation

! Structure d"accueil
" espace d"excution des conteneurs et composants " mdiateur entre conteneurs et services du systme
11 2005-2006, S. Krakowiak 12

interfaces de sortie (requises)


asynchrone

Conteneur

Schma gnrique de conteneur

! Mise en uvre du contrleur de composants


" Conteneur : infrastructure de gestion pour un ou plusieurs composants # Par composant ou par type " Rappel des fonctions : cycle de vie, mdiation, gestion de services, composition (si composants composites) " Gnration automatique des conteneurs partir # des descriptions d"interfaces des composants (cf. talons) # de paramtres de configuration fournis " Contrats entre le conteneur et les composants inclus # Interface interne du contrleur # Interfaces de rappel des composants
Gestion du cycle de vie

Contrle du conteneur

Service

appel en retour

appel interne

Gestion appels sortants

composant composant Gestion appels entrants


optimisation appels locaux

Illustrations spcifiques pour diffrents modles : EJB, CCM, OSGi, Fractal/Julia,

2005-2006, S. Krakowiak

13

2005-2006, S. Krakowiak

14

Cycle de vie des composants (1)

Cycle de vie des composants (2)

create template

create

remove

Mcanismes pour conomiser les ressources


" Activation-passivation

Template Factory

Template

Factory

passivate : limine le composant de la mmoire si non utilis (en stockant son tat) appel par le conteneur # activate : Restitue l"tat du composant ,qui peut tre rutilis " Pool d"instances
Le conteneur maintient un pool fixe d"instances de composants qui peuvent donner vie des composants virtuels # Un composant virtuel incarn par une instance du pool devient utilisable, condition de charger son tat => mthodes de rappel pour sauver-restaurer l"tat # videmment plus simple pour les composants sans tat " Diffrences entre passivation et pool # Passivation : gr par le conteneur, pas de mthodes de gestion de l"tat passive #

passivate

Un modle gnrique, qui sera illustr concrtement avec les EJB

non existent

active

activate
2005-2006, S. Krakowiak 15

cf illustrations plus tard dans le cours (EJB)

2005-2006, S. Krakowiak

16

Cycle de vie des composants (3)

Dsignation des composants

Maison (home)
" Partie du conteneur (visible de l"extrieur) qui gre le cycle de vie des composants qu"il inclut (du mme type) # Engendr automatiquement ( partir d"un IDL) " Fonctions # Crer / dtruire les composants : implmente Factory, utilise les mcanismes d"conomie (pool, passivation) # Grer les composants pendant leur existence (en particulier nommer, localiser) " Interface fournie # create, find, remove # Utilise une interface de rappel ( implmenter par le programmeur)

! Principe : dsignation contextuelle


" Dsignation dans un contexte global # Service de noms (CORBA, J2EE/JNDI, ) # Cl pour les objets persistants (cl primaire SGBD) " Dsignation locale pour viter noms globaux en dur # Symbolique # Rfrence (poigne)
composant composant

nom local composant cf illustrations plus tard dans le cours (EJB) composant Service de noms

rfrence

2005-2006, S. Krakowiak

17

2005-2006, S. Krakowiak

18

Liaison des composants

Appel d"un composant

Les principes gnraux de la liaison s"appliquent ; quelques spcificits.

! Principe
" Le conteneur ralise une mdiation pour l"appel d"une mthode d"un composant, via un objet intermdiaire (intercepteur) " Comme le reste du conteneur, l"intercepteur est engendr automatiquement (fait partie de la chane de liaison) " Le conteneur fournit en gnral une optimisation locale pour les appels entre composants qu"il contient

! Plusieurs types de liaison selon localit


" Entre composants de mme niveau dans un mme espace : rfrence dans cet espace (exemple : rfrence Java) " Entre composants dans des espaces diffrents : objet de liaison (avec ventuellement optimisations locales) # Exemple EJB :
$ Dans un mme conteneur : LocalObject $ Entre deux conteneurs : RemoteObject $ Entre client et serveur : RMI (stub + skeleton)

! Fonctions ralises
" Lien avec gestion de ressources (activation d"un composant passiv) " Scurit " Fonctions supplmentaires la carte (intercepteurs programmables)

" Entre composants inclus (dans les modles qui l"autorisent) # Exportation - Importation

2005-2006, S. Krakowiak

19

2005-2006, S. Krakowiak

20

Mise en uvre des composants

Description d"architecture

! Ensemble des composants logiciels d"une application


Composant

" identification des composants " dsignation des composants

utilise client composant

connecteur synchrone

Conteneur

! Structuration des composants


" composition hirarchique (sous-composants)

Conteneur

connecteur asynchrone

Composant Conteneur

! Interconnexion des composants


" dpendances entre composants (fournit - requiert) " modes de communication (synchrone, asynchrone) " protocoles de communication

Structure d"accueil

Structure d"accueil

! Autres aspects
" rgles d"usage " contraintes globales (environnement requis)

Bus logiciel + services (dsignation, persistance, transactions, scurit, etc.)

2005-2006, S. Krakowiak

21

2005-2006, S. Krakowiak

22

Intrt d"une description globale d"architecture

Langages de description d"architecture


MIL : Module Interconnection Languages ADL : Architecture Description Languages
! Objectifs
" Description globale de l"architecture d"une application # Dfinition des composants
$ interfaces fournies, requises

! Facilite la conception et la ralisation


" ralise la synthse entre # le cahier des charges (fonctions requises) # les mthodes de conception # la mise en uvre # le dploiement en environnement rparti

! Facilite la comprhension globale du systme


" outil de documentation

# Dfinition des interconnexions " Support d"outils pour la vrification # Dfinition des types des composants # Vrification de conformit des interfaces " Support d"outils pour le dploiement # Annotations spcifiant le dploiement # Gnration automatique de scripts de dploiement

! Facilite le processus d"volution


" modification des composants (interface, ralisation) " modification des relations entre composants " modification du dploiement

! Ralisations
" Essentiellement prototypes de recherche

2005-2006, S. Krakowiak

23

2005-2006, S. Krakowiak

24

Composants : situation

Java Beans

! La programmation par composants en est ses dbuts


" Standards de facto ct serveur (issus de l"industrie) # J2EE (intgre de nombreuses technologies : EJB, JSP, MS, JNDI, JDBC,) # .NET (intgre COM+, ASP.NET, C#, CLR,) " Moins dvelopp ct client # Exemple : JavaBeans " Normalisation par consortiums # OMG : Composants CORBA : CORBA Component Model (CCM) # OSGI : modle plus lger pour applications embarques, mobiles " Recherche et travaux en cours # Modles et infrastructures innovants : Fractal, Avalon, (logiciel libre) # Langages de description d"architectures
$ $ $ Vers des normes pour ADL ? Prototypes en cours travaux en cours l"OMG (OSD : Open Software Description) travaux sur l"extension de l"UML

! Objectifs
" Construction de programmes clients (en gnral interfaces graphiques) par composition dynamique # Assemblage dynamique de composants # Visualisation en ligne de l"application ralise " Ne traite pas la rpartition

! Proprits
" Un bean possde des attributs publics (exportables) " Un bean est configurable (par modification de ses proprits) " Les beans communiquent entre eux par vnements " Chaque bean est persistant (survit au processus crateur) " On peut dcouvrir dynamiquement les proprits d"un bean (introspection)

# Support pour configuration et dploiement : SmartFrog, # Aide la conception

2005-2006, S. Krakowiak

25

2005-2006, S. Krakowiak

26

Proprits des Beans

Communication entre Beans

! Dfinitions
" proprit : attribut public pouvant tre modifi depuis l"extrieur par d"autres beans ou par des outils (PropertyEditor) " droits : read/write, read only, write only " attributs de prsentation (couleur, taille, etc.) ou de comportement

" Communication de type vnement - raction, avec abonnement pralable (publish - subscribe) # les vnements sont des objets particuliers

bean abonn 1

! Identification des proprits


" rgles syntaxiques : int setX(int i) et int getX() identifient un attribut X de type entier " diffrents types : simples, indexes, lies (vnement mis chaque modification), contraintes (contrle sur la modification via un autre bean)

bean source
abonn event_a, event_b

event -a bean abonn 2 event-b


abonn event_b

2005-2006, S. Krakowiak

27

2005-2006, S. Krakowiak

28

vnements

vnements

" Les vnements sont des objets Java particuliers # hritent de la classe Java.util.EventObject # on peut dfinir plusieurs types d"vnements dans un bean metteur " Abonnement # un bean qui doit rgir un vnement doit s'abonner auprs du bean susceptible d"mettre cet vnement, en spcifiant le type de l"vnement # pour cela, le bean metteur d"un vnement de type TypeEvent doit fournir des mthodes d"abonnement et de dsabonnement!: addTypeListener(TypeListener l); removeTypeListener(TypeListener l); (Type est le type de l"vnement considr)

Le systme d"vnements suit un canevas bien dfini (conventions de nommage et de typage)


public interface TypeListener extends EventListener{ !!!!void handleCause(TypeEventObject e); }

Source

public synchronized addTypeListener(TypeListener l); public synchronized removeTypeListener(TypeListener l);

abonn_1

implements

Source.addTypeListener(this); A.handleCause(e);

TypeEventObject e

handleCause(e);

abonn_2

pour tous A dans vecteur vector TypeListener TypeEventObject e

2005-2006, S. Krakowiak

29

2005-2006, S. Krakowiak

30

L"environnement de dveloppement (BeanBox)

Exemple
http://java.sun.com/beans/docs/Tutorial-Nov97.pdf

public interface WaterListener extends EventListener { void handleSplash(WaterEventObject weo);


implements implements

WaterSource vector WaterListeners

Valve vector WaterListeners

Pipe vector WaterListeners

WaterEventObject

WaterEventObject

liste de beans

espace de travail pour les beans

proprits des beans

source : http://java.sun.com/docs/books/tutoria/javabeans/
2005-2006, S. Krakowiak 31

La source envoie priodiquement des vnements (mission d"eau) aux valves et tuyaux. Une valve peut tre ferme (elle arrte l"eau) ou ouverte (elle laisse passer, donc retransmet l"vnement). Un tuyau se comporte comme une valve ouverte. Un ensemble de tuyaux et valves sont interconnects.
2005-2006, S. Krakowiak 32

Exemple : dfinition d"un vnement

Exemple : Watersource
WaterSource public class WaterSource extends Canvas implements Runnable { private Vector waterListeners = new Vector(); Thread thread; public WaterSource() { setBackground(Color.blue); liste des beans qui se thread = new Thread(this); sont abonns aux thread.start(); vnements de type } waterEvent public Dimension getMinimumSize() { return new Dimension(15,15); } public void run() { while(true) { envoi d"eau splash(); try { thread.sleep(1000); 1 fois par seconde } catch (Exception e) {} } }
33 2005-2006, S. Krakowiak 34

WaterEventObject public class WaterEventObject extends EventObject { long timeOfEvent; public WaterEventObject(Object o) { super(o); timeOfEvent = System.currentTimeMillis(); } public long getTimeOfEvent() { return timeOfEvent; } }

2005-2006, S. Krakowiak

Exemple : Watersource (fin)


Fin de WaterSource

Exemple : Valve
Valve public class Valve extends Canvas implements WaterListener, Runnable { private Vector waterListeners = new Vector(); private WaterEventObject lastWaterEvent; tat ouvert ou ferm private boolean open = true; Thread thread; public Valve() { setBackground(Color.white); thread = new Thread(this); thread.start(); } public boolean isOpen() { return open; } test et manipulation de l"tat public void setOpen(boolean x) { open = x; } public Dimension getMinimumSize() { return new Dimension(20,30); } traitement de l"vnement public void handleSplash(WaterEventObject e) { WaterEvent lastWaterEvent = e; if (isOpen()) { setBackground(Color.blue); repaint(); splash(); si ouvert, propager } l"vnement } conventions : bleu, l"eau passe ; blanc non
2005-2006, S. Krakowiak 36

public synchronized void addWaterListener(WaterListener l) { waterListeners.addElement(l); } public synchronized void removeWaterListener(WaterListener l) { waterListeners.removeElement(l); } cration d"unvnement private void splash() { WaterEvent Vector l; WaterEventObject weo = new WaterEventObject(this); on envoie l"vnement la synchronized(this) { liste courante des l = (Vector)waterListeners.clone(); abonns (on en } prend une copie for (int i = 0; i < l.size(); i++) { pour viter les WaterListener wl = (WaterListener) l.elementAt(i); interfrences avec wl.handleSplash(weo); les abonnements en cours } mission d"unvnement } WaterEvent (on active la mthode de traitement de chaque rcepteur }

2005-2006, S. Krakowiak

35

Exemple : Valve (fin)


public void run() { while(true) { try { thread.sleep(1000); } catch (Exception e) {} if (lastWaterEvent != null) { long dt = System.currentTimeMillis() - lastWaterEvent. getTimeOfEvent(); peindre la valve en blanc si un if ((dt > 2000) || (!isOpen())) { vnement WaterEvent n"a setBackground(Color.white); pas t reu dans les 2 repaint(); dernires secondes, ou si la } valve est ferme } }} public synchronized void addWaterListener(WaterListener l) { waterListeners.addElement(l);} public synchronized void removeWaterListener(WaterListener l) { waterListeners.removeElement(l);} void splash() { Vector l; mme canevas que WaterEventObject weo = new WaterEventObject(this); prcdemment synchronized(this) { l = (Vector)waterListeners.clone();} for (int i = 0; i < l.size(); i++) { WaterListener wl = (WaterListener) l.elementAt(i); wl.handleSplash(weo);} } }

Exemple : Pipe

Pipe public class Pipe extends Canvas implements WaterListener, Runnable { private Vector waterListeners = new Vector(); private WaterEventObject lastWaterEvent; Thread thread; public Pipe() { setBackground(Color.white); thread = new Thread(this); thread.start(); } public Dimension getMinimumSize() { return new Dimension(150,10); } public void handleSplash(WaterEventObject e) { lastWaterEvent = e; setBackground(Color.blue); mme repaint(); comportement que splash(); valve ouverte }

2005-2006, S. Krakowiak

37

2005-2006, S. Krakowiak

38

Exemple : Pipe (fin)


public void run() { while(true) { try { thread.sleep(1000); } catch (Exception e) {} if (lastWaterEvent != null) { long dt = System.currentTimeMillis() peindre en blanc si un -lastWaterEvent.getTimeOfEvent(); vnement WaterEvent n"a if (dt > 2000) { pas t reu dans les 2 setBackground(Color.white); dernires secondes (mme repaint(); chose que valve ouverte) } } } } public synchronized void addWaterListener(WaterListener l) { waterListeners.addElement(l);} public synchronized void removeWaterListener(WaterListener l) { waterListeners.removeElement(l);} void splash() { WaterEventObject weo = new WaterEventObject(this); for (int i = 0; i < waterListeners.size(); i++) { WaterListener wl = (WaterListener)waterListeners.elementAt(i); wl.handleSplash(weo); } } } 2005-2006, S. Krakowiak

Exemple : mise en uvre

Crer un objet WaterSource, et un ensemble d"objets Pipe et Valve. Connecter les metteurs et rcepteur d'vnements entre eux (l"environnement BeanBox permet de le faire simplement Activer l"objet WaterSource Ouvrir et fermer les valves (l"environnement permet de modifier la proprit open d"une valve) On peut alors observer l"coulement de l"eau dans le circuit (reprsent en bleu ou en blanc selon que l"eau passe ou non)

39

2005-2006, S. Krakowiak

40

Java Beans : conclusion

Enterprise Java Beans (EJB)

! Modle de composants
" intgration au niveau source (Java) " modle simple et commode pour les composants individuels " modle bien adapt aux composants graphiques " outils limits pour la description de l"architecture # pas de visualisation globale de l"architecture

! Objectifs
" Faciliter la construction des programmes pour les serveurs d"entreprise (niveau intermdiaire d"une architecture 3 niveaux) par assemblage de composants rutilisables " Fournir un environnement pour des services communs (persistance, transactions, etc.), permettant au dveloppeur de se concentrer sur les problmes spcifiques de l"application " Permettre le dveloppement d"une industrie des composants en sparant les fonctions de dveloppement de composants, d"assemblage d"applications, et de fourniture de services

! Environnement de dveloppement (BeanBox)


" outils d"aide la construction # dition simple des proprits et des mthodes # plus dificile pour les liens entre Beans " non prvu pour la rpartition

! Caractristiques gnrales
" 2 types d"Enterprise Beans # Entity Bean : reprsente un objet, en gnral persistant # Session Bean : reprsente le droulement d"une srie d"actions pour un client " Environnement = serveur + conteneur

2005-2006, S. Krakowiak

41

2005-2006, S. Krakowiak

42

Schma d"excution des EJB

Fonctions lies aux Enterprise Java Beans

Les beans fournissent un ensemble de services, en ralisant les traitements spcifiques une application (business logic). Les clients font appel ces services. Bean Bean

EB provider

Enterprise Bean (EB) development

Application assembler
Client Client Conteneur Le conteneur intercepte les appels aux beans qu"il contient et ralise diverses fonctions communes (persistance, transactions, scurit). Serveur Conteneur Bean

Application

Deployer
Bean Bean

Container deployment and execution

EJB container provider EJB server provider System administrator Server Administration tools

Les conteneurs isolent les beans - a) des clients, - b) d"une implmentation spcifique du serveur Le serveur joue le rle d"intermdiaire entre le systme et le conteneur (il permet au conteneur de raliser ses fonctions en faisant appel aux primitives du systme)

source : documentation JOnAS : http://www.objectweb.org/jonas/


2005-2006, S. Krakowiak 43 2005-2006, S. Krakowiak 44

Contrats des EJB


!

Contrat ct client

Des contrats sont associs chaque bean


" doivent tre respects par le client, le bean et le conteneur " contrat ct client # fournit une vue uniforme du bean au client (vue indpendante de la plate-forme de dploiement) " contrat ct conteneur # permet la portabilit des beans sur diffrents serveurs " contrat d"archivage (packaging) # dfinit un format de fichier standard (ejb-jar-file) pour archiver les beans. Ce format doit tre respect par tous les outils

! Localisation du bean
" utilisation de JNDI (interface Java un service d"annuaire)

! Utilisation du bean
" via les interfaces standard fournies par le dveloppeur des beans # Home Interface (mthodes lies la gestion du bean : create, remove, find, etc. # Remote Interface (mthodes propres l"application)

! Le conteneur ralise un mcanisme de dlgation


contrat d"archivage conteneur

" le client ne s"adresse pas directement au bean, mais au conteneur " le conteneur fait suivre les appels

bean
contrat conteneur contrat client
2005-2006, S. Krakowiak

serveur

ejb-jar-file
45 2005-2006, S. Krakowiak 46

Schma d"excution des EJB : une vue plus prcise

Contrat ct conteneur

Home Interface

EJB Home Stub Client EJB Object Stub

RMI

EJB Home Object

Deployment descriptor

! Un conteneur ralise des fonctions pour le compte des beans

JDBC (interface SGBD)

qu"il contient
" gestion du cycle de vie, gestion de l"tat, scurit, transactions, concurrence, etc " ces services appellent des mthodes fournies par le bean (callback methods)
BD

Engendrs automatiquement

Bean
EJB Object Conteneur JTM (service de transactions)

RMI

Remote Interface

# exemple : ejbCreate, ejbPostCreate, ejbLoad, ejbStore, etc.

Une application trs simple (un seul type de Bean). Exemple : compte bancaire

! Les conteneurs grent deux types de Beans


" Entity Beans : ralisent des objets de l"application " Session Beans : ralisent des squences d"oprations pour un client " Des contrats spcifiques sont dfinis pour chacun de ces types (avec variantes selon le degr de prise en charge des fonctions par le conteneur)

tout Bean sont associs un EJB Object et un EJB Home Object L"EJB Home Object ralise les fonctions lies au cycle de vie du Bean : cration, identification et recherche, destruction. Il est lui-mme localis grce un annuaire (interface JNDI) L" EJB Object ralise l"interface d"accs aux services du Bean. Il intercepte tous les appels au Bean et assure les fonctions de transactions, persistance, gestion de l"tat, scurit, selon des modalits spcifies dans le deployment descriptor.
2005-2006, S. Krakowiak 47

2005-2006, S. Krakowiak

48

EJB Entity Beans

EJB Session Beans

! Proprits
" reprsentent des entits persistantes (stockes dans un SGBD) sous forme d"objets ; les entity beans sont eux-mmes persistants # la gestion de la persistance peut tre faite par le bean lui mme (bean managed persistence) ou dlgue au conteneur (container managed persistence) " partags par plusieurs clients # d"o gestion de la concurrence " peuvent participer des transactions " survivent aux arrts o aux pannes des serveurs EJB " mode de cration # cration explicite d"une instance # insertion d"une entit dans la base de donnes

! Proprits
" reprsentent une suite d"oprations pour le compte d"un client particulier # traitements en mmoire # accs au SGBD " sont crs et dtruits par un client " non persistants " ne rsistent pas aux pannes ou l"arrt du serveur " deux modes de gestion de l"tat # stateless (sans tat) : pas de donnes internes!; peut tre partag entre plusieurs clients ; pas de passivation (cf. plus loin) # stateful (avec tat) : conserve son tat sur une suite d"appels de mthodes (pour le compte d"un client et d"un seul)!; prvoir passivation et activation (cf. plus loin)

2005-2006, S. Krakowiak

49

2005-2006, S. Krakowiak

50

Cycle de vie des Session Beans (1)


Stateless Session Beans
grs en pool par le conteneur (oprations invisibles au client) pris dans le pool lors de l"appel de create() par le client dtruits l"initiative du conteneur (gestion interne du pool)

Cycle de vie des Session Beans (2)


Stateful Session Beans
peuvent tre passivs par le conteneur si inactifs (conomie de ressources) ractivs quand le client en a besoin

Appel de mthode Destruction


ejbRemove()

Appel de mthode (hors transaction) Destruction


ejbRemove() Dbut transaction

Appel de mthode (dans transaction)

n"existe pas

Prt
ejbCreate()

n"existe pas
ejbCreate()

Prt
ejbActivate() ejbPassivate()

rollback

Prt dans transaction

Cration Cration
pas d"tat => pas de sauvegarde Dlai de garde (Home)

Validation (commit)

Passiv

passivation => sauvegarde de l"tat


52

2005-2006, S. Krakowiak

51

2005-2006, S. Krakowiak

Cycle de vie des Entity Beans


Entity Beans
cration et mise en pool par le conteneur sortie du pool aprs opration create sur Home par le client (+ ejbPostCreate() pour initialiser)

Gestion du cycle de vie par le conteneur

! Administration (via Home Interface)


" Permet au client de crer, dtruire, rechercher un bean " Le bean doit implmenter les mthodes (callback) correspondantes!: ejbCreate, ejbPostCreate , etc

Appel de mthode Cration (Home) : create Destruction


ejbPostCreate()

! Gestion de l"tat d"un bean par le conteneur


ejbPassivate()

n"existe pas

Gestion interne du pool

En pool
ejbActivate()

Prt

Cration interne (par conteneur)

ejbLoad() ejbStore

" Passivation # enregistrement de l"tat du bean en mmoire persistante # dsactivation du bean (il ne peut plus tre appel) " Activation # chargement de l"tat du bean depuis la mmoire persistante # ractivation du bean (il redevient utilisable) " Le bean doit implmenter les mthodes (callback) ejbPassivate et ejbActivate

Fin (Home) : remove()


ejbRemove()

2005-2006, S. Krakowiak

53

2005-2006, S. Krakowiak

54

Gestion de la persistance

Gestion des transactions


" Conforme l"architecture XA (X/Open Architecture)

! Gestion par le conteneur


" Le conteneur est responsable de la sauvegarde de l"tat " Les champs sauvegarder et le support doivent tre spcifis sparment (dans le descripteur de dploiement)

# en Java : Java Transaction API (JTA) " Modle de transaction plat " Gestion dclarative des transactions # pour un bean entier ou pour chaque mthode # attributs transactionnels dfinis dans le descripteur de dploiement # galement contrle explicite possible par le bean
Attribut transactionnel associ une mthode du bean NotSupported Required Supports RequiresNew Mandatory Never Transaction du client -T1 -T1 -T1 -T1 -T1 !!!! Transaction excutant la mthode du bean --T2 T1 -T1 T1 T2 Erreur T1
56

! Gestion par le bean


" Le bean est responsable de la sauvegarde de son tat (il doit explicitement insrer les oprations d"accs permettant la gestion de la persistance dans les fonctions de callback appropries " Moins adaptable que la gestion par le conteneur, puisque les oprations de gestion de la persistance sont insres en dur dans le code

2005-2006, S. Krakowiak

55

2005-2006, S. Krakowiak

Gestion de la scurit
! Fonction

Descripteur de dploiement

" Spcification dclarative de diverses proprits d"un bean

! La gestion de la scurit est dlgue au maximum au conteneur


" simplifie la programmation, augmente la portabilit

! Bases de la scurit
" API scurit de Java (javax.security) " mthodes lies la scurit dans le conteneur (javax.ejb.EJBContext : interface du conteneur, base de EntityContext et SessionContext) # getCallerPrincipal # isCallerInRole " attributs de scurit dans le descripteur de dploiement du Bean # spcification de rles # spcification de mthodes excutables sous un rle

# Identification, attributs de transaction, champs persistants, environnement, gestion ou non par le conteneur, rles pour la scurit, etc . " Utilis par le conteneur pour mettre en uvre ses fonctions

! Forme
" Depuis EJB 1.1 : descripteur en XML " Pour chaque proprit, une balise particulire est dfinie par la DTD " Exemple
<persistence-type>Container</persistence-type> <container-transaction> <method> <ejb-name>MyBean</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</ trans-attribute> </container-transaction>
57 2005-2006, S. Krakowiak persistance gre par le conteneur

transactions gres par le conteneur excution transactionnelle obligatoire pour toutes les mthodes 58

2005-2006, S. Krakowiak

tapes du dveloppement d"une application en EJB (1)

tapes du dveloppement d"une application en EJB (2)

! Dveloppement d"un Entity Bean

! Dveloppement d"un Session Bean


" crer la Home Interface (tend ejb.EJBHome) # mthodes create, remove " crer la Remote Interface (tend ejb.EJBObject) # mthodes spcifiques l"application " crire l"implmentation des mthodes de cration (Create, PostCreate) " crire l"implmentation de l"interface # mthodes spcifiques # mthodes callback
$ setSessionContext, ejbActivate, ejBPassivate, etc $ si le bean a un tat gr par le conteneur : afterBegin, afterCompletion, beforeCompletion, etc

" crer la Home Interface (tend ejb.EJBHome) # mthodes create, remove " crer la Remote Interface (tend ejb.EJBObject) # mthodes spcifiques l"application " crire une classe srialisable cl primaire (nomduBeanPK) destine servir de cl de recherche et de manipulation du bean " crire l"implmentation des mthodes de cration (Create, PostCreate) " crire l"implmentation de l"interface # mthodes spcifiques # mthodes callback
$ $

setEntityContext, ejbActivate, ejBPassivate, etc ejbLoad, ejbStore, etc. Si la persistance est gre par le conteneur, ejbLoad et ejbStore peuvent tre vides.

2005-2006, S. Krakowiak

59

2005-2006, S. Krakowiak

60

tapes du dveloppement d"une application en EJB (3)

Exemples

! crire un descripteur de dploiement


" un par bean " dfinit le comportement pour les transactions, la persistance, la scurit, le lien avec les bases de donnes utilises, l"environnement (placement sur les serveurs), etc.

Voir exemple dans la documentation de JOnAS : http://objectweb.org/jonas/

Exemple simple : serveur de comptes bancaires


un Entity Bean en deux versions AccountImpl : persistance implicite( gre par le conteneur) AccountExpl : persistance explicite( gre par le bean) un programme client (sans session) ClientAccount un descripteur de dploiement ejb-jar un fichier Makefile

! Mettre en place le serveur


" compiler les programmes des beans " engendrer les classes du conteneur (implmentation des interfaces Home et Remote) au moyen de l"outil adquat (GenIC dans JOnAS) auquel on fournit les classes des beans et le descripteur de dploiement

! Dvelopper et lancer le programme client


" le client obtient les rfrences aux beans via un service de noms " le client peut crer et lancer des sessions, ou appeler directement les Entity beans

Exemple plus complexe : serveur de commerce lectronique


ECOM RICOM

2005-2006, S. Krakowiak

61

2005-2006, S. Krakowiak

62

Conclusion sur les EJB (pour l"utilisateur)


Rfrences gnrales

Rfrences sur les EJB

! Un modle base de composants pour les serveurs


" largement adopt!; influence la normalisation (OMG)

R. Monson-Haefel, Enterprise Java Beans, 3rd edition, O"Reilly, 2000 http://java.sun.com/products/ejb/ Produits JOnAs (Bull-ObjectWeb) : logiciel libre : http://www.objectweb.org/jonas/ JBoss : logiciel libre + services payants : http://www.jboss.com/ WebLogic (BEA) : http://www.weblogic.com/ WebSphere (IBM) : http://www.ibm.com/software/websphere/ Fonctionnement interne d"un serveur EJB
M. Vlter, A. Schmid, E. Wolff, Server Component Patterns, Wiley 2002
Voir aussi http://www.voelter.de/conferences/tutorials.html

! Avantages
" simplifie la ralisation d"applications complexe en librant le concepteur des aspects non directement lis l"application # gestion dclarative des transactions # gestion de la persistance # gestion de la scurit # gestion de la rpartition " augmente l"indpendance entre plate-forme et applications # sparation des rles des fournisseurs # ouverture, concurrence, amlioration de la qualit " modle extensible

2005-2006, S. Krakowiak

63

2005-2006, S. Krakowiak

64

Vous aimerez peut-être aussi