Вы находитесь на странице: 1из 41

Hafedh Mili 2002.

Tous droits rservs 1


5 - 1
Architecture J2EE et Enterprise Java
Beans
Enterprise
Java Beans
5 - 2
HaIedh Mili Copyright 2002
Plan
L'architecture J2EE
L'architecture Enterprise Java Beans
Services de base
Les Sessions Bean
Stateless
Stateful
Les Entity Bean
JDBC
Persistence gre par la bean (bean-managed)
Persistence gre par le serveur (container-managed)
Considrations de conception
Examples
Hafedh Mili 2002. Tous droits rservs 2
Enterprise
Java Beans
5 - 3
HaIedh Mili Copyright 2002
Dfis du gnie logiciel de nos jours
La ralit d'aujourd'hui (la "globalisation" ) requiert le
dveloppement d'applications distribues et performantes
Intgration de systmes d'information d'une entreprise (qui peut
tre gographiquement distribue)
Intgration de systmes d'informations de plusieurs entreprises,
l'occasion de relations d'affaires (B2B)
Le dveloppement de ces applications est trs complexe,
et ce, pour plusieurs raisons:
Dfis techniques ds intgralement l'infrastructure de calcul
(rseaux de communication, distribution de charge, robustesse
("fault-tolerance")
Difficult de mise en place de certains services (transaction,
scurit)
INTER-OPRABILIT!!!!!
Enterprise
Java Beans
5 - 4
HaIedh Mili Copyright 2002
Quatre approches diffrentes
Ne rien faire (envoyer des fichiers par e-mail ou des
hardcopy)
Dvelopper vous mme et l'infrastructure de dploiement
et d'excution et la logique d'affaires
Utiliser l'infrastructure de dploiement et d'excution d'un
fournisseur et vous concentrer sur la logique d'affaire
Utiliser la solution propritaire d'UN fournisseur
Se mettre d'accord, entre fournisseurs et clients, sur une
architecture, permettant plusieurs fournisseurs de supporter
cette architecture, et aux clients de pouvoir choisir sans se pr-
occuper de l'inter-oprabilit des applications
Hafedh Mili 2002. Tous droits rservs 3
Enterprise
Java Beans
5 - 5
HaIedh Mili Copyright 2002
Trois grandes tendances
Au dbut (88-93):
COM/DCOM: solution propritaire de MICROSOFT
COM marche mieux que DCOM/COM+
CORBA: standard dvelopp par l'OMG, un organisme volontaire
de l'industrie regroupant clients et fournisseurs de technologie
Que faire:
COM est plus simple utiliser dans les environnements Windows
Une base d'implantation assez importante
CORBA est plus ouvert
Produits pas mrs
Pas d'inter-oprabilit
Il fallait choisir entre les deux
Enterprise
Java Beans
5 - 6
HaIedh Mili Copyright 2002
Trois grandes tendances
Aprs (93 96):
MICROSOFT et OMG se rendent compte qu'ils doivent offrir des
ponts entre leurs technologies pour que les choix de technologie
soient moins pnibles et moins critiques
Les outils CORBA murissent, mais le dveloppement
d'applications CORBA n'en demeure pas moins relativement
compliqu
Hier (96/97 00)
Les technologies Java rentrent dans le march d'abord par Java
RMI:
Infrastructure RMI simple (beaucoup plus simple que CORBA)
Exige du Java de bout en bout
On parle d'inter-oprabilit avec Microsoft
Le grand coup d'clat avec J2EE, qui offre plus de services que
COM et CORBA
Hafedh Mili 2002. Tous droits rservs 4
Enterprise
Java Beans
5 - 7
HaIedh Mili Copyright 2002
Trois grandes tendances
Ce matin (00 aujourd'hui)
Microsoft sort .NET et C# pour concurrencer J2EE et Java
Une pntration assez forte de la technologie J2EE dans le
march nord-amricain
Un "alphabet soup" de technologies provenant de diffrents
vendeurs
Plusieurs couches de technologie bties par dessus (et des fois
ct) des technologies de base
Enterprise
Java Beans
5 - 8
HaIedh Mili Copyright 2002
L'architecture J2EE - Principes
Hafedh Mili 2002. Tous droits rservs 5
Enterprise
Java Beans
5 - 9
HaIedh Mili Copyright 2002
L'architecture J2EE
C'est une architecture trois/quatre tiers:
Tiers client: couche assez mince, contenant la logique
d'invocation et d'affichage des donnes
Tiers application: reflte la logique d'affaires (oriente-
objet), riche en fonctionnalits, et offrant plusieurs
services "architecturaux"
Tiers donnes, offrant la persistence et l'accs centralis
aux donnes
Enterprise
Java Beans
5 - 10
HaIedh Mili Copyright 2002
Plusieurs scnarios de
dploiement
Hafedh Mili 2002. Tous droits rservs 6
Enterprise
Java Beans
5 - 11
HaIedh Mili Copyright 2002
Un scnario quatre tiers simple
pages HTML contenant applet qui
utilise session et entity beans
Enterprise
Java Beans
5 - 12
HaIedh Mili Copyright 2002
L'architecture J2EE
Sun spcifie des composants au niveau de chacun des
tiers, et fournit des outils/classes dans chacun de ces
tiers
Pour ce faire, elle utilise beaucoup de technologies
Hafedh Mili 2002. Tous droits rservs 7
Enterprise
Java Beans
5 - 13
HaIedh Mili Copyright 2002
Rsum
Enterprise
Java Beans
5 - 14
HaIedh Mili Copyright 2002
Plan
L'architecture J2EE
L'architecture Enterprise Java Beans
Services de base
Les Sessions Bean
Stateless
Stateful
Les Entity Bean
JDBC
Persistence gre par la bean (bean-managed)
Persistence gre par le serveur (container-managed)
Considrations de conception
Examples
Hafedh Mili 2002. Tous droits rservs 8
Enterprise
Java Beans
5 - 15
HaIedh Mili Copyright 2002
Enterprise Java Beans
"The Enterprise Java Beans architecture is a
component architecture for the development and
deployment of object-oriented distributed enterprise-
level applications. Applications written using the
Enterprise Java Beans architecture are scalable,
transactional, and multi-user secure. These
applications may be written once, and deployed on any
server platform that supports the Enterprise Java Beans
specification"
Sun Microsystems's EJB specification, 1998
Enterprise
Java Beans
5 - 16
HaIedh Mili Copyright 2002
L'architecture EJB
Cette architecture spcifie
Les services que doit support un serveur EJB ("EJB-
compliant")
Les interfaces (contrats) que les classes ou composants
d'affaire doivent supporter pour pouvoir bnficier de ces
services
=>
Le modle de composants de EJB
Hafedh Mili 2002. Tous droits rservs 9
Enterprise
Java Beans
5 - 17
HaIedh Mili Copyright 2002
Caractristiques de serveurs EJB
Infrastructure d' objets distribus
Services de concurrence (accs partag aux mmes
ressources)
Service de transactions (ACID)
Distribution de charge
Gestion (optimale) des ressources
Scurit
Enterprise
Java Beans
5 - 18
HaIedh Mili Copyright 2002
Distribution d' objets
ma machine
Auteur MonApplet
getNom()
ajouteLivre(livre)
ma machine
Auteur_proxy
MonApplet
getNom()
ajouteLivre(livre)
Auteur_serv
Infrastructure RMI
paramtres
getLivres()
rsultats
Hafedh Mili 2002. Tous droits rservs 10
Enterprise
Java Beans
5 - 19
HaIedh Mili Copyright 2002
Distribution d'objets (2)
"Client" et "serveur" roulent dans deux processus et
possiblement machines diffrentes
Un "reprsentant local" (proxy) prend lieu de l'objet
distant du ct du client, et se comporte comme son
reprsentant
Le passage de paramtres travers le rseau se fait par
srialisation et dsrialisation de donnes (objets)
L'identit d'un objet n'est plus lie un espace mmoire
local, mais devient identifiable travers le rseau par
d'autres caractristiques
Enterprise
Java Beans
5 - 20
HaIedh Mili Copyright 2002
Infrastructures "RMI" existantes
ORBs, Java RMI, DCOM (et le TP2) offrent toutes
l'invocation de mthodes distance
Dans chacune de ces technologies l, les outils de
dploiement gnrent des "proxies", du ct client, et des
"skelettes", du ct serveur, partir d'une description
"abstraite" (interface) de la fonctionnalit de l'objet:
CORBA utilise CORBA IDL
COM utilise COM IDL
Java RMI utilise les interfaces Java
Le dveloppeur doit implanter la fonctionnalit d'affaires
du ct serveur
Hafedh Mili 2002. Tous droits rservs 11
Enterprise
Java Beans
5 - 21
HaIedh Mili Copyright 2002
Infrastructures existantes
Plusieurs infrastructures offrent (ou dpendent de) un
service d'adressage/nommage global:
Ce service permet d'attribuer des "noms" des objets distants, et
de les retrouver avec ces noms l
Peuvent offrir d'autres services qui accompagnent ces
services de base:
Transactions (distribues, two-phase commit) (CORBA et
probablement DCOM)
Lifecycle (COM/DCOM et CORBA)
Relations (CORBA)
Scurit (CORBA, COM/DCOM, etc.)
Enterprise
Java Beans
5 - 22
HaIedh Mili Copyright 2002
Vue d'ensemble de l'architecture
EJB
RMI layer
Concur-
rency
service
Transac.
service
Security
service

La couche RMI est ncessaire mais largement


insuffisante
CORBA offre beaucoup de services, mais les
dveloppeurs doivent les invoquer, et rgler les
problmes d'intractions de services.
La plupart des services EJB sont offerts d'office et
configurables au moment du dploiement
Hafedh Mili 2002. Tous droits rservs 12
Enterprise
Java Beans
5 - 23
HaIedh Mili Copyright 2002
Varits de Beans
Il y a deux (trois) grandes classes de beans:
Entity beans: Ces bean reprsentent les entits du
domaine d'affaires; ce sont les objets qui vont survivre au
del d'une intraction client-serveur, et peuvent tre
partags par plusieurs usagers (les serveur EJB grent
l'accs partag)
Session beans: elles reprsentent des processus
d'affaires; sont transientes. Typiquement, elles implantent
des use-cases. Elles sont spcifiques l'usager/client.
Deux sortes
Stateless beans: chaque appel de mthode est indpendant de
l'appel suivant
Stateful beans: les mthodes appeles ont des effets de bord
qui sont utiliss pour les appels suivants. Reprsentent des
transactions complexes
Enterprise
Java Beans
5 - 24
HaIedh Mili Copyright 2002
Type de beans
La diffrence entre EntityBean et SessionBean est
importante pour le dveloppeur (diffrentes conventions,
diffrentes mthodes implanter) et pour les serveurs
La diffrence entre stateful SessionBean et stateless
SessionBean ne fait pas de diffrence au niveau de la
programmation:
Elle est spcifie au moment du dploiement
Elle influence la faon dont le serveur traite les beans
Hafedh Mili 2002. Tous droits rservs 13
Enterprise
Java Beans
5 - 25
HaIedh Mili Copyright 2002
Composants d'une EJB
L'interface remote (interface): dcrit la logique d'affaires.
Doit tre une extension de l'interface EJBObject
L'interface home (interface): reprsente l'objet qui nous
permet de crr et rechercher les objets de la bean. Cette
interface doit tre une extension de EJBHome
La classe bean (class): cette classe doit implements
l'interface EntityBean (SessionBean), et doit fournir une
implantation pour les mthodes de l'interface remote et
celles de l'interface home.
Les interfaces EntityBean et SessionBean incluent des
mthodes "callback" qui seront appeles par le serveur
pour la gestion du cycle de vie et de la persistence des
beans. Les classes "bean" doivent implanter ces
mthodes
Enterprise
Java Beans
5 - 26
HaIedh Mili Copyright 2002
Vue globale simplifie
AuteurHome_proxy
Auteur_proxy
AuteurHome_skele
Auteur
AuteurHome
AuteurEJB
Server Client
create
create
MonApplet
create ()
bla bla
Auteur_impl
Hafedh Mili 2002. Tous droits rservs 14
Enterprise
Java Beans
5 - 27
HaIedh Mili Copyright 2002
Example: une session bean qui
donne l'heure
package quelleheureestil;
import javax.ejb.EJBObject;
import java.util.Calendar;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
/**
* Title: Illustration de la plus simple bean
*/
public interface DonneLHeure extends EJBObject {
public Calendar quelleHeureEstIl() throws RemoteException;
public Calendar etEnTerreNeuve() throws RemoteException;
}
Enterprise
Java Beans
5 - 28
HaIedh Mili Copyright 2002
Home interface
package quelleheureestil;
import javax.ejb.EJBHome;
import javax.ejb.CreateException;
import java.util.Calendar;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
public interface DonneLHeureHome extends EJBHome {
public DonneLHeure create() throws RemoteException,
CreateException;
}
Hafedh Mili 2002. Tous droits rservs 15
Enterprise
Java Beans
5 - 29
HaIedh Mili Copyright 2002
L'implantation
public class DonneLHeureEJB implements SessionBean {
public DonneLHeureEJB() {
System.out.println("Creation d'un donneur de l'heure");
}
/** implantation de la methode de la remote interface
*/
public Calendar quelleHeureEstIl() throws RemoteException {
System.out.println("On me demande l'Heure");
Calendar heure = GregorianCalendar.getInstance();
return heure;
}
public Calendar etEnTerreNeuve() throws RemoteException {
System.out.println("On me demande l'Heure en Terre Neuve");
Calendar heure = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT-4:30"));
return heure;
}
public void ejbCreate() throws RemoteException, CreateException { }
public void ejbActivate() throws EJBException, RemoteException {}
public void ejbPassivate() throws EJBException, RemoteException {}
public void ejbRemove() throws EJBException, RemoteException {}
public void setSessionContext(SessionContext parm1) throws EJBException, RemoteException {}
}
Enterprise
Java Beans
5 - 30
HaIedh Mili Copyright 2002
L'application client
public class Principale {
public Principale() {
}
public static void main(String[] args) {
try {
// obtiens une instance du service de nommage
Context instanceDeNamingService = new InitialContext();
// obtiens reference au serveur du serveur de temps
Object reference = instanceDeNamingService.lookup("ServeurDuServeurDeTemps");
// faire un cast scuritaire DonneLHeureHome
DonneLHeureHome serveurDuServeurDetemps =
(DonneLHeureHome)PortableRemoteObject.narrow(reference,quelleheureestil.DonneLHeureHome
.class);
// obtiens un donneur d'heure
DonneLHeure serveurDeTemps = serveurDuServeurDetemps.create();
System.out.println("L'heure chez le serveur est " +serveurDeTemps.quelleHeureEstIl());
}
catch (Exception exception) {
exception.printStackTrace();
}
}
}
Hafedh Mili 2002. Tous droits rservs 16
Enterprise
Java Beans
5 - 31
HaIedh Mili Copyright 2002
Plan
L'architecture J2EE
L'architecture Enterprise Java Beans
Services de base
Les Sessions Bean
Stateless
Stateful
Les Entity Bean
JDBC
Persistence gre par la bean (bean-managed)
Persistence gre par le serveur (container-managed)
Considrations de conception
Examples
Enterprise
Java Beans
5 - 32
HaIedh Mili Copyright 2002
Services de base
Gestion des ressources
Instance pooling
Distribution de charge
Services:
Concurrence
Transactions
Persistence
Distribution
Naming
Security
Hafedh Mili 2002. Tous droits rservs 17
Enterprise
Java Beans
5 - 33
HaIedh Mili Copyright 2002
Les beans
Une application serveur peut dsservir plus milliers de
clients en mme temps
La cration de ces beans prend pas mal de place, mais
surtout, pas mal de temps (allocation dynamique de
mmoire)
On peut optimiser l'utilisation des beans de deux faons:
Ne pas dtruire les objets quand ils ne sont plus utiliss. On les
"vide", mais on attend une nouvelle requte pour un autre bean
pour pouvoir les rutiliser pour d'autres programmes clients
Dans certains cas, on peut utiliser le mme objet pour rpondre
plusieurs clients (stateless session bean)
Enterprise
Java Beans
5 - 34
HaIedh Mili Copyright 2002
tat d'un bean (entity)
Etat neant
Pooled state
Etat prt
instantiation
aIIectation a un objet EJB
Repondre aux besoins
du client
(1)
(2)
(3)
(4)
session client terminee
(5) retour au neant
Hafedh Mili 2002. Tous droits rservs 18
Enterprise
Java Beans
5 - 35
HaIedh Mili Copyright 2002
tat d'un bean (entity)
Etat neant
Pooled state
Etat prt
setEntityContext()
create()
ejbCreate()
ejbPostCreate()
Repondre aux besoins
du client
(1)
(2)
(3)
(4)
remove()
ejbRemove()
(5) unsetEntityContext()
ejbActivate()
ejbPassivate()
Enterprise
Java Beans
5 - 36
HaIedh Mili Copyright 2002
Cycle de vie d'un bean
home stub EJB home
create()
(1)
newInstance()
(2)
(3)
AIIectation d'une instance
de bean a l'objet
(4)
AIIectation d'une instance
de bean a l'objet
home stub
Auteur stub
EJBObject
EJB home
Hafedh Mili 2002. Tous droits rservs 19
Enterprise
Java Beans
5 - 37
HaIedh Mili Copyright 2002
Instance swapping
Les session bean qui sont stateless peuvent tre passes
entre clients pendant les pauses entre requtes d'un
client
Les session beans qui sont stateful sont srialises en
mmoire secondaire lorsqu'elles ne sont pas utilises:
ejbActivate(): que faire lors d'un chargement de mmoire
secondaire
ejbPassivate(): que faire lorsqu'on s'apprte sortir le session
bean de la mmoire
Enterprise
Java Beans
5 - 38
HaIedh Mili Copyright 2002
Cycle de vie des session beans
Etat neant
(1)
Etat prt
(2)
(3)
create()
setSessionContext()
ejbCreate()
remove()
ejbRemove()
sert les requtes du client
Stateless
Etat neant
(1)
Etat prt Etat "passiI"
(2)
(3)
(4)
(5)
sert les requtes du client
create()
setSessionContext()
ejbCreate()
ejbPassivate()
ejbActivate()
remove()
ejbRemove()
StateIul
Hafedh Mili 2002. Tous droits rservs 20
Enterprise
Java Beans
5 - 39
HaIedh Mili Copyright 2002
Gestion des stateful session beans
L'activation et la passivation des beans est laisse la
discrtion du "container"
Le but est de conserver les ressources
L'une des techniques utilises est celle de la bean "Least
Recently Used", i.e. dont l'utilisation remonte au plus
longtemps
Si tout n'est pas srialise, il faut veiller reconstituer
l'tat de la bean (dans ejbActivate())
Enterprise
Java Beans
5 - 40
HaIedh Mili Copyright 2002
Distribution de charge
L'architecture J2EE ne spcifie pas de stratgie
particulire de distribution de charge, mais
Les implantations doivent permettre la distribution de
charge entre plusieurs serveurs, de faon transparente
par rapport au programme client
Hafedh Mili 2002. Tous droits rservs 21
Enterprise
Java Beans
5 - 41
HaIedh Mili Copyright 2002
Services
Services de base
Concurrence
Transactions
Persistence
Distribution
Naming
Security
Ces services sont des add-ons, qu'il faut
invoquer explicitement dans CORBA
Ils sont requis (et transparents) dans EJB
Enterprise
Java Beans
5 - 42
HaIedh Mili Copyright 2002
Concurrence
Les session beans ne supportent pas la concurrence:
Les stateful beans sont attribues une par programme client, et
donc, pas besoin de les partager
Les stateless beans n'ont pas de donnes faire partager entre
plusieurs programmes clients, et donc, il n'y a pas lieu de les
partager: on peut juste en crer d'autres pour rpondre aux
requtes des clients
Les entity beans: doivent tre partages entre
programmes clients
EJB interdit l'accs concurrent aux entity beans: chaque
programme client verrouille l'entity bean qu'il manipule,
durant sa manipulation (invocation de mthode)
Hafedh Mili 2002. Tous droits rservs 22
Enterprise
Java Beans
5 - 43
HaIedh Mili Copyright 2002
Concurrence des entity beans
Les containers implementent la synchronization
automatiquement: toutes les mthodes d'affaires des
beans sont considres comme "synchronized" (sont
excutes l'intrieur de blocs synchronized sur l'objet)
On ne peut pas crer de thread dans les beans (les
containers doivent maintenir le contrle total sur la
concurrence dans le systme).
Enterprise
Java Beans
5 - 44
HaIedh Mili Copyright 2002
Les beans ne peuvent pas tre r-
entrantes
Client
Auteur1 Livre12
ou habitent les
co-auteurs de
tes livres?
Donnes moi les adresses
de tes auteurs
(1)
(2)
(3)
Donnes moi ton adresse
Pour le container, l'appel (3) est (1) paraissent comme
venant de deux clients diIIerents
Hafedh Mili 2002. Tous droits rservs 23
Enterprise
Java Beans
5 - 45
HaIedh Mili Copyright 2002
Transactions
Les container grent les transactions automatiquement
Durant le dploiement, le dveloppeur spcifie les
"attributs transactionnels" de chaque mthode
Dans l'un des modes (required), le container excute les
mthodes dans des transactions (si la mthode choue,
les changements partiels effectus la BD sont rtracts)
Enterprise
Java Beans
5 - 46
HaIedh Mili Copyright 2002
Persistence
Les entity bean sont, par dfinition, persistentes
La persistence des entity beans peuvent tre accomplie
de deux faons:
Gre automatiquement par le "container" (container managed
persistence)
Gre " bras" par le dveloppeur (bean-managed persistence)
Pour la "container-managed persistence", chaque
vendeur choisit un(e) (ensemble de) technologie(s) de
persistence adapte
Pour la "bean-managed persistence", le dveloppeur peut
faire comme il veut (y compris lire les donnes d'un
fichier)
Hafedh Mili 2002. Tous droits rservs 24
Enterprise
Java Beans
5 - 47
HaIedh Mili Copyright 2002
Persistence
Deux mthodes ("callback") figurent dans l'interface d'une
entity bean pour synchronizer la base de donnes et les
entity bean du container:
ejbLoad() est appele pour initialiser une entity bean
connue par sa cl primaire
ejbSave() est appele pour sauvegarder l'tat de
l'objet dans la BD
Pour du container-managed, ces mthodes sont
gnres
Pour du bean-managed, le dveloppeur doit les coder
D'autres mthodes seront ncessaires pour les fonctions
d'accs aux objets associs
Enterprise
Java Beans
5 - 48
HaIedh Mili Copyright 2002
Container-managed persistence
Deux types de technologies:
Bases de donnes relationnelles:
Le dveloppeur spcifie une correspondence entre les classes
(entity bean) et les tables d'une base de donnes relationnelle
On fait (trs bien) la correspondence entre attributs et navigation
simple (relations un plusieurs)
On fait depuis EJB 2.0 le mapping pour les relations plusieurs
plusieurs
Bases de donnes orientes objet
Il n'y a quasiment rien faire.
Hafedh Mili 2002. Tous droits rservs 25
Enterprise
Java Beans
5 - 49
HaIedh Mili Copyright 2002
Bean-managed persistence
La sauvegarde des donnes est faite grce du code
que le dveloppeur devra crire
Du fait sur mesure, permettant une certaine optimisation
(lazy initialization)
De l'ouvrage
Enterprise
Java Beans
5 - 50
HaIedh Mili Copyright 2002
Distribution
Premire version de EJB (1.0) spcifique Java RMI
Depuis EJB 1.1, il est en principe, possible d'interfacer un
client CORBA avec un serveur EJB, grace au protocole
RMI-IIOP, et un client ActiveX grace DCOM
CORBA IIOP
RMI-IIOP
DCOM
Client
DCOM
(ActiveX,
etc.)
Client Java
Client CORBA
(Java, C,
Smalltalk, etc.)
Hafedh Mili 2002. Tous droits rservs 26
Enterprise
Java Beans
5 - 51
HaIedh Mili Copyright 2002
Nommage (naming)
Java Naming and Directory Interface: API pour
enregistrement et dpistage de clients
JNDI peut se plugger sur plusieurs services de nommage
// obtiens une instance du service de nommage
Context instanceDeNamingService = new InitialContext();
// obtiens reference au serveur du serveur de temps
Object reference = instanceDeNamingService.lookup("ServeurDuServeurDeTemps");
// faire un cast scuritaire DonneLHeureHome
DonneLHeureHome serveurDuServeurDetemps =
(DonneLHeureHome)PortableRemoteObject.narrow(reference,quelleheureestil.Donne
LHeureHome.class);
// obtiens un donneur d'heure
DonneLHeure serveurDeTemps = serveurDuServeurDetemps.create();
Enterprise
Java Beans
5 - 52
HaIedh Mili Copyright 2002
Scurit
Les serveurs EJB supportent trois types de scurit:
Identification: identifier les usagers du systme par code
usager et mots de passe
Authorizations: restreindre l'accs aux mthodes des
EJBs certains usagers ou certains groupes d'usagers
(roles)
Communication confidentielle: les donnes transmises
sont scurises
Hafedh Mili 2002. Tous droits rservs 27
Enterprise
Java Beans
5 - 53
HaIedh Mili Copyright 2002
Authorizations: modle base de
rles
On dfinit des rles
On dfinit les permissions pour les mthodes par rapport
aux rles
On associe des usagers ou groupes d'usager des roles
(via le deploytool)
On s'identifie au moment de dmarrer l'application
Enterprise
Java Beans
5 - 54
HaIedh Mili Copyright 2002
Identification de l'usager

properties.put(Context.SECURITY_PRINCIPAL,nomUsager);
properties.put(Context.SECURITY_CREDENTIALS,motDePasse);

Context nommage = new InitialContext(properties);

Object reference = nommage.lookup("Ma Bean");


.
Hafedh Mili 2002. Tous droits rservs 28
Enterprise
Java Beans
5 - 55
HaIedh Mili Copyright 2002
On peut savoir qui appelle une
mthode
public abstract interface EJBContext {
// Methods
EJBHome getEJBHome();
EJBLocalHome getEJBLocalHome();
Properties getEnvironment();
Identity getCallerIdentity();
Principal getCallerPrincipal();
boolean isCallerInRole(Identity p0);
boolean isCallerInRole(String p0);
UserTransaction getUserTransaction() throws IllegalStateException;
void setRollbackOnly() throws IllegalStateException;
boolean getRollbackOnly() throws IllegalStateException;
}
Enterprise
Java Beans
5 - 56
HaIedh Mili Copyright 2002
Plan
L'architecture J2EE
L'architecture Enterprise Java Beans
Services de base
Les Sessions Bean
Stateless
Stateful
Les Entity Bean
JDBC
Persistence gre par la bean (bean-managed)
Persistence gre par le serveur (container-managed)
Considrations de conception
Examples
Hafedh Mili 2002. Tous droits rservs 29
Enterprise
Java Beans
5 - 57
HaIedh Mili Copyright 2002
Session beans: rappel
Session beans: elles reprsent des processus d'affaires;
sont transientes. Typiquement, elles implantent des use-
cases. Elles sont spcifiques l'usager/client. Deux sortes
Stateless beans: chaque appel de mthode est indpendant de
l'appel suivant
Stateful beans: les mthodes appeles ont des effets de bord
qui sont utiliss pour les appels suivants. Reprsentent des
transactions complexes
Enterprise
Java Beans
5 - 58
HaIedh Mili Copyright 2002
Cycle de vie des session beans
Etat neant
(1)
Etat prt
(2)
(3)
create()
setSessionContext()
ejbCreate()
remove()
ejbRemove()
sert les requtes du client
Stateless
Etat neant
(1)
Etat prt Etat "passiI"
(2)
(3)
(4)
(5)
sert les requtes du client
create()
setSessionContext()
ejbCreate()
ejbPassivate()
ejbActivate()
remove()
ejbRemove()
StateIul
Hafedh Mili 2002. Tous droits rservs 30
Enterprise
Java Beans
5 - 59
HaIedh Mili Copyright 2002
Pour implanter une session bean
Il faut dfinir trois interfaces:
remote interface: une interface qui reprsente les
fonctionnalits d'affaire de la "bean"
home interface: une interface qui reprsente un "utilitaire"
pour crer, ou chercher des instances de la home
interface
Classe EJB: classe qui implante la fonctionnalit de la
session bean
Enterprise
Java Beans
5 - 60
HaIedh Mili Copyright 2002
L'interface "remote"
Doit tre une extension de EJBObject
Chaque mthode doit lancer:
RemoteException ou EJBException pour reprsenter les
exceptions d'infrastructure (lien de communication rompue,
connexion des ressources non-disponibles, etc.)
Les exceptions spcifiques au domaine d'application, au besoin
Les arguments et rsultats de retour doivent tre
acceptables pour RMI-IIOP
Ils doivent tre srializables
Peuvent reprsenter des rfrences des objets "distants"
Hafedh Mili 2002. Tous droits rservs 31
Enterprise
Java Beans
5 - 61
HaIedh Mili Copyright 2002
L'interface home
Cette interface doit hriter de javax.ejb.EJBHome
Cette interface contient des mthodes pour:
Crer des beans (entity beans ou session beans)
Appeler d'autre mthodes utilitaires (non appelable directement
sur un objet du domaine)
Doit inclure au moins une mthode "create" (peu importe
le nombre d'arguments)
Peut inclure des mthodes "remove"
Les mmes restrictions pour les types de paramtres et
de retour des mthodes
Enterprise
Java Beans
5 - 62
HaIedh Mili Copyright 2002
La classe "bean"
Cette classe doit:
Implanter l'interface SessionBean
Implanter les mthodes incluses dans la remote interface
Mme signature que dans la remote interface
Implanter les mthodes incluses dans la home interface
Nom de mthode de la home interface prfix par ejb. Exemple:
si dans home interface la mthode s'appelle "create()", dans la
classe Bean, il doit y avoir une mthode correspondente avec le
nom ejbCreate, et qui lance les mmes exceptions
Doit avoir un constructeur public sans arguments
Hafedh Mili 2002. Tous droits rservs 32
Enterprise
Java Beans
5 - 63
HaIedh Mili Copyright 2002
Cration d'une session bean
(stateful)
Client EJBHome EJB Object sc: Sessi on
context
instance
create(args)
new
new
new
seSessionContext(sc)
ejbCreate(args)
Enterprise
Java Beans
5 - 64
HaIedh Mili Copyright 2002
Cration d'une session bean
(stateless)
On cre le EJB object suite la demande du create() du
client
La "cration" de la bean instance, et son affectation au
EJB object est reporte jusqu'au moment o on a besoin
de la bean (invocation d'une mthode)
Hafedh Mili 2002. Tous droits rservs 33
Enterprise
Java Beans
5 - 65
HaIedh Mili Copyright 2002
Interface session bean
public void setSessionContext(SessionContext ctx) throws
EJBException, RemoteException
La bean doit emmagasiner le "contexte" dans une variable
d'instance. Ce contexte permettra plus tard de savoir qui a
appel (pour des questions de securit)
public void ejbActivate() throws EJBException,
RemoteException
Le container appelle cette mthode la fin de la ractivation de
la bean (stateful)
public void ejbPassivate() throws EJBException,
RemoteException
Le container informe la bean qu'elle va se faire passiver
public void ejbRemove() throws EJBException,
RemoteException
Le container informe la bean qu'elle va se faire effacer
Enterprise
Java Beans
5 - 66
HaIedh Mili Copyright 2002
Interface Session Bean
Trs souvent, on peut laisser ejbPassivate() et
ejbActivate() vides
Dans certains cas, on les utilise pour:
reconstruire certaines donnes non-srialises
relcher ou racqurir les ressources qu'on utilise
Typiquement, ejbRemove() et ejbPassivate() vont se
ressembler
ejbRemove() sera souvent appele automatiquement par
le container, mais l'occasion par le client (via remove())
Hafedh Mili 2002. Tous droits rservs 34
Enterprise
Java Beans
5 - 67
HaIedh Mili Copyright 2002
Plan
L'architecture J2EE
L'architecture Enterprise Java Beans
Services de base
Les Sessions Bean
Stateless
Stateful
Les Entity Bean
JDBC
Persistence gre par la bean (bean-managed)
Persistence gre par le serveur (container-managed)
Considrations de conception
Examples
Enterprise
Java Beans
5 - 68
HaIedh Mili Copyright 2002
Pour implanter une entity bean
Il faut dfinir:
remote interface: une interface qui reprsente les
fonctionnalits d'affaires de la "bean"
home interface: une interface qui reprsente un "utilitaire"
pour crer, ou chercher des instances de la home
interface
Classe EJB: classe qui implante la fonctionnalit de la
entity bean
Classe cl primaire (optionnelle): une classe qui
reprsente la cl primaire des entity bean. Cette classe
peut tre String, si on est capable d'identifier uniquement
les instances de la bean avec juste une valeur
Hafedh Mili 2002. Tous droits rservs 35
Enterprise
Java Beans
5 - 69
HaIedh Mili Copyright 2002
Remote et home interface
Mmes restrictions que pour la session bean au niveau
des signatures des mthodes
La home interface doit inclure la signature
<interface remote> findByPrimaryKey(<type de cl>
arg)throws RemoteException, FinderException;
N'est pas oblig d'avoir des mthodes "create()"
La home interface peut inclure d'autres mthodes de
fouilles d'entity bean. Les mthodes "finder" doivent:
Commencer par le prfix "find"
Soit retourner une instance de la bean (interface remote)
Soit retourner une collection d'instances de la bean
Doivent lancer au moins les exceptions RemoteException et
FinderException
Enterprise
Java Beans
5 - 70
HaIedh Mili Copyright 2002
La bean class
Cette classe doit:
Implanter l'interface EntityBean
Implanter les mthodes incluses dans la remote interface
Mme signature que dans la remote interface
Implanter les mthodes incluses dans la home interface
Nom de mthode de la home interface prfix par ejb. Exemple:
si dans home interface la mthode s'appelle "create()", dans la
classe Bean, il doit y avoir une mthode correspondente avec le
nom ejbCreate, et qui lance les mmes exceptions
Doit avoir un constructeur public sans arguments
L'implantation des mthodes "finder" doit retourner une
cl primaire ou une collection de cls primaires
Hafedh Mili 2002. Tous droits rservs 36
Enterprise
Java Beans
5 - 71
HaIedh Mili Copyright 2002
Identit des objets
Les objets sont identifis uniquement par:
leur base (leur home)
leur cl primaire
Pour vrifier l'identit de deux objects, on utilise la
mthode isIdentical(EJBObject unObject)
Il ne faut pas utiliser "==" pour comparer des entity (ou
session bean) du cot client
Enterprise
Java Beans
5 - 72
HaIedh Mili Copyright 2002
Cycle de vie d'une entity bean
Etat neant
Pooled state
Etat prt
setEntityContext()
create()
ejbCreate()
ejbPostCreate()
Repondre aux besoins du client
(3)
remove()
ejbRemove()
unsetEntityContext()
ejbActivate()
ejbPassivate()
ejbLoad()
ejbStore()
find.()
ejbFind.()
Hafedh Mili 2002. Tous droits rservs 37
Enterprise
Java Beans
5 - 73
HaIedh Mili Copyright 2002
Cycle de vie
La bean instance est cre par le container avec
BeanClass.newInstance(), suivi de
setEntityContext(EntityContext ctx)
Le contexte contient de l'information sur le container et sur l'objet
qui appelle
Dans l'tat pooled, l'instance de bean n'est pas attribue
un EJBObject
Dans ce temps l, elle peut excuter n'importe quelle mthode
finder (mthodes de la home interface).
L'instance ne va pas vers un ready state la fin d'une finder
method (mme pas findByPrimaryKey())
Enterprise
Java Beans
5 - 74
HaIedh Mili Copyright 2002
Cycle de vie (suite)
C'est le container qui slectionne une bean instance pour
l'attribuer un objet, et donc, la faire passer vers l'tat
prt.
Deux transitions possibles:
Par le biais de ejbCreate() et ejbPostCreate() (en rponse
un appel sur le home de la part du client)
Par le biais d'un ejbActivate(), qui est appele automatiquement
par le container quand il a besoin d'une bean instance pour
rpondre aux besoins d'un client
Hafedh Mili 2002. Tous droits rservs 38
Enterprise
Java Beans
5 - 75
HaIedh Mili Copyright 2002
Cycle de vie (suite)
A l'tat prt, la bean instance est associe un objet, et
le container peut tre amen invoquer ejbLoad et
ejbStore plusieurs fois pour synchroniser l'tat de la bean
instance
A l'tat prt, tout ce que l'on sait c'est que le contexte de
la bean instance peut nous donner accs la cl
primaire.
La bean instance revient l'tat pooled de deux faons:
le container peut appeler ejbPassivate() (gestion de ressources)
le client appelle ejbRemove()
unsetEntityContext() enlves une bean instance de l'tat
pooled (la prpare pour la garbage collection)
Enterprise
Java Beans
5 - 76
HaIedh Mili Copyright 2002
L'interface EntityBean (suite)
public void setEntityContext(EntityContext ctx) throws
EJBException, RemoteException
Il faut sauvegarder le contexte dans une variable d'instance pour
pouvoir y rfrer dans d'autres mthodes (e.g. pour savoir qui
appelle). On peut rserver des ressources ici
public void unsetEntityContext() throws EJBException,
RemoteException
Le dernier soupir de la bean instance. On y lche les ressources
acquises dans setEntityContext()
Hafedh Mili 2002. Tous droits rservs 39
Enterprise
Java Beans
5 - 77
HaIedh Mili Copyright 2002
L'interface EntityBean (suite)
public <cle> ejbCreate(args~) throws CreateException,
RemoteException, d'autres exceptions~
La bean instance existe, mais n'est pas attribue un objet
encore
Cette mthode valide les arguments (y compris les possibilits de
conflict de cl primaire), initialise la bean instance, et insre
l'objet dans la BD
Retourne la cl primaire
public void ejbPostCreate(args~) throws CreateException,
RemoteException, d'autres exceptions~
La bean instance existe, mais et est attribue un objet
Si on demander la cl primaire de l'objet ( partir du contexte), on
la trouverait
Sera trs souvent vide
Peut servir pour notifier une autre bean de la cration de celle ci,
en appelant getEJBObject() sur le contexte pour avoir la
rfrence l'objet courant pour "se passer" comme argument
Enterprise
Java Beans
5 - 78
HaIedh Mili Copyright 2002
L'interface EntityBean (suite)
public void ejbActivate() throws EJBException,
RemoteException
Cette mthode est appele quand le container slectionne la
entity bean instance pour l'attribuer un objet
La cl primaire est disponible
On peut l'utiliser pour acqurir de nouvelles ressources
Ce n'est pas ici qu'on synchronise la bean instance avec la BD
(ejbLoad() s'en occupe, et elle sera appele par le container)
public void ejbPassivate() throws EJBException,
RemoteException
Cette mthode est appele quand le container dcide de
dissocier la entity bean instance d'un objet
On peut l'utiliser pour relcher les ressources dtenues
Ce n'est pas ici qu'on synchronize la bean instance avec la BD
(ejbStore() s'en occupe, et elle sera appele par le container)
Hafedh Mili 2002. Tous droits rservs 40
Enterprise
Java Beans
5 - 79
HaIedh Mili Copyright 2002
L'interface EntityBean (fin)
public void ejbLoad() throws EJBException,
RemoteException
appele par le container pour synchroniser l'tat de la bean
instance avec la BD
la cl primaire est disponible
la cl primaire est la seule garantie de l'identit de l'objet
public void ejbStore() throws EJBException,
RemoteException
appele par le container pour sauvegarder l'tat de la bean
instance dans la BD
Enterprise
Java Beans
5 - 80
HaIedh Mili Copyright 2002
Les finders
Les finders sont excuts par des bean instance qui sont
dans l'tat pooled.
On ne peut pas supposer que l'instance qui excute un
findByPrimaryKey() sera la mme que le container
choisira d'attribuer l'objet en question
Pas la peine de rien initialiser dans cette mthode
La home interface retourne des objets (remote interface)
ou des collection d'objet), alors que dans la bean entity
class, on retourne la cl primaire (ou une collection de
cls primaires)
Il faut laisser le choix au container de choisir les bean
instance qu'il veut!
Considrez les comme des mthodes statiques!
Hafedh Mili 2002. Tous droits rservs 41
Enterprise
Java Beans
5 - 81
HaIedh Mili Copyright 2002
Plan
L'architecture J2EE
L'architecture Enterprise Java Beans
Services de base
Les Sessions Bean
Stateless
Stateful
Les Entity Bean
JDBC
Persistence gre par la bean (bean-managed)
Persistence gre par le serveur (container-managed)
Considrations de conception
Exemples
Enterprise
Java Beans
5 - 82
HaIedh Mili Copyright 2002
Considrations de conception
Les appels distants cotent chers
Ne "beanez" pas toutes vos classes:
Dans une aggrgation, ne beanez que l'objet principal
La sauvegarde en BD s'assurera de tout sauvergarder
Ce qui n'est accessible que indirectement peut rester sur le
serveur
Faut il manipuler des objets ou des identificateurs
Granularit des mthodes des sessions bean
Co-localisation des beans

Вам также может понравиться

  • It 68
    It 68
    Документ52 страницы
    It 68
    Zaynab Fadlallah
    Оценок пока нет
  • E4 Processus Et Paramétrage Finance
    E4 Processus Et Paramétrage Finance
    Документ171 страница
    E4 Processus Et Paramétrage Finance
    Zaynab Fadlallah
    Оценок пока нет
  • SAPBusinessObjectsEdgeSeries 3.1 DM Install Windows FR
    SAPBusinessObjectsEdgeSeries 3.1 DM Install Windows FR
    Документ100 страниц
    SAPBusinessObjectsEdgeSeries 3.1 DM Install Windows FR
    Zaynab Fadlallah
    Оценок пока нет
  • Cour MCD
    Cour MCD
    Документ22 страницы
    Cour MCD
    Harouna Coulibaly
    Оценок пока нет
  • QCM 2010-2
    QCM 2010-2
    Документ2 страницы
    QCM 2010-2
    Zaynab Fadlallah
    Оценок пока нет
  • Tables Fico
    Tables Fico
    Документ3 страницы
    Tables Fico
    Naoual Ka
    Оценок пока нет
  • Tables Fico
    Tables Fico
    Документ3 страницы
    Tables Fico
    Naoual Ka
    Оценок пока нет
  • Cal en Drier
    Cal en Drier
    Документ16 страниц
    Cal en Drier
    Valerie Landry
    Оценок пока нет
  • Tables Fico
    Tables Fico
    Документ3 страницы
    Tables Fico
    Naoual Ka
    Оценок пока нет
  • SI350 TVNumerique DVB
    SI350 TVNumerique DVB
    Документ46 страниц
    SI350 TVNumerique DVB
    Zaynab Fadlallah
    Оценок пока нет
  • It 68
    It 68
    Документ52 страницы
    It 68
    Zaynab Fadlallah
    Оценок пока нет
  • Fa Q Eclipse
    Fa Q Eclipse
    Документ69 страниц
    Fa Q Eclipse
    Zaynab Fadlallah
    Оценок пока нет
  • Tables Fico
    Tables Fico
    Документ3 страницы
    Tables Fico
    Naoual Ka
    Оценок пока нет
  • E4 Processus Et Paramétrage Finance
    E4 Processus Et Paramétrage Finance
    Документ171 страница
    E4 Processus Et Paramétrage Finance
    Zaynab Fadlallah
    Оценок пока нет
  • It 68
    It 68
    Документ52 страницы
    It 68
    Zaynab Fadlallah
    Оценок пока нет
  • FinancialAndManagementAccounting BA
    FinancialAndManagementAccounting BA
    Документ518 страниц
    FinancialAndManagementAccounting BA
    Zaynab Fadlallah
    100% (1)
  • Cours Architecture
    Cours Architecture
    Документ136 страниц
    Cours Architecture
    Zaynab Fadlallah
    Оценок пока нет
  • Analyse Et Conception D'un Projet BI
    Analyse Et Conception D'un Projet BI
    Документ6 страниц
    Analyse Et Conception D'un Projet BI
    Zaynab Fadlallah
    Оценок пока нет
  • Cours Architecture
    Cours Architecture
    Документ136 страниц
    Cours Architecture
    Zaynab Fadlallah
    Оценок пока нет
  • Ajax en Clair Phototheque
    Ajax en Clair Phototheque
    Документ7 страниц
    Ajax en Clair Phototheque
    Zaynab Fadlallah
    Оценок пока нет
  • QCM 2010-1
    QCM 2010-1
    Документ2 страницы
    QCM 2010-1
    Zaynab Fadlallah
    Оценок пока нет
  • Architecture J2EE Et Enterprise Java Beans
    Architecture J2EE Et Enterprise Java Beans
    Документ41 страница
    Architecture J2EE Et Enterprise Java Beans
    Zaynab Fadlallah
    Оценок пока нет
  • Anatomie Ajax
    Anatomie Ajax
    Документ11 страниц
    Anatomie Ajax
    Zaynab Fadlallah
    Оценок пока нет
  • Anatomie Ajax
    Anatomie Ajax
    Документ11 страниц
    Anatomie Ajax
    Zaynab Fadlallah
    Оценок пока нет
  • Présentation Des Expressions Languages.: F. Martini (Adiguba)
    Présentation Des Expressions Languages.: F. Martini (Adiguba)
    Документ21 страница
    Présentation Des Expressions Languages.: F. Martini (Adiguba)
    Zaynab Fadlallah
    Оценок пока нет
  • Présentation Des Expressions Languages.: F. Martini (Adiguba)
    Présentation Des Expressions Languages.: F. Martini (Adiguba)
    Документ21 страница
    Présentation Des Expressions Languages.: F. Martini (Adiguba)
    Zaynab Fadlallah
    Оценок пока нет
  • tp2 Ejb
    tp2 Ejb
    Документ1 страница
    tp2 Ejb
    Zaynab Fadlallah
    Оценок пока нет
  • QCM Java
    QCM Java
    Документ27 страниц
    QCM Java
    e.azaiez4761
    89% (28)