Académique Documents
Professionnel Documents
Culture Documents
En Général
En Général
Composants logiciels
Exemples : Java Beans, Enterprise Java Beans
" Accs, depuis des clients, des donnes permanentes (SGBD), avec traitement spcifique
client
client
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
applications existantes
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
!
application existante
Objectifs
" Facilit de dveloppement (donc cot rduit) " Capacit d"volution et de croissance " Ouverture (intgration, supports htrognes, etc)
SGBD
Apache
Tomcat
JOnAS
MySQL
IIOP
traitement
SQL SGBD
2005-2006, S. Krakowiak
2005-2006, S. Krakowiak
Plan de prsentation
" Seules sont dfinies les interfaces fournies, non celles requises
! Difficult d"volution
" consquence de l"absence de vision globale
Beans (EJB)
" Principes " Applications
Services
2005-2006, S. Krakowiak
2005-2006, S. Krakowiak
Composants : dfinition
! 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
Composant
! 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
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
Conteneur
Contrle du conteneur
Service
appel en retour
appel interne
2005-2006, S. Krakowiak
13
2005-2006, S. Krakowiak
14
create template
create
remove
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
non existent
active
activate
2005-2006, S. Krakowiak 15
2005-2006, S. Krakowiak
16
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)
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
! 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
! 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
Description d"architecture
connecteur synchrone
Conteneur
Conteneur
connecteur asynchrone
Composant Conteneur
Structure d"accueil
Structure d"accueil
! Autres aspects
" rgles d"usage " contraintes globales (environnement requis)
2005-2006, S. Krakowiak
21
2005-2006, S. Krakowiak
22
# 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
! Ralisations
" Essentiellement prototypes de recherche
2005-2006, S. Krakowiak
23
2005-2006, S. Krakowiak
24
Composants : situation
Java Beans
! 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)
2005-2006, S. Krakowiak
25
2005-2006, S. Krakowiak
26
! 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
bean source
abonn event_a, 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)
Source
abonn_1
implements
Source.addTypeListener(this); A.handleCause(e);
TypeEventObject e
handleCause(e);
abonn_2
2005-2006, S. Krakowiak
29
2005-2006, S. Krakowiak
30
Exemple
http://java.sun.com/beans/docs/Tutorial-Nov97.pdf
WaterEventObject
WaterEventObject
liste de 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 : 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 : 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 : 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
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
! 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
! 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
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
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
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)
Contrat ct client
! 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 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
Contrat ct conteneur
Home Interface
RMI
Deployment descriptor
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
Une application trs simple (un seul type de Bean). Exemple : compte bancaire
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
! 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
n"existe pas
Prt
ejbCreate()
n"existe pas
ejbCreate()
Prt
ejbActivate() ejbPassivate()
rollback
Cration Cration
pas d"tat => pas de sauvegarde Dlai de garde (Home)
Validation (commit)
Passiv
2005-2006, S. Krakowiak
51
2005-2006, S. Krakowiak
n"existe pas
En pool
ejbActivate()
Prt
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
2005-2006, S. Krakowiak
53
2005-2006, S. Krakowiak
54
Gestion de la persistance
# 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
2005-2006, S. Krakowiak
55
2005-2006, S. Krakowiak
Gestion de la scurit
! Fonction
Descripteur de dploiement
! 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
" 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
Exemples
2005-2006, S. Krakowiak
61
2005-2006, S. Krakowiak
62
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