Vous êtes sur la page 1sur 127

Les Enterprise Java Beans

Didier DONSEZ
Universit Joseph Fourier (Grenoble 1)
IMA LSR/ADELE
Didier.Donsez@imag.fr, Didier.Donsez@ieee.org
http://www-adele.imag.fr/~donsez/cours
Plan
IRappels
Programmation par Composant
Architecture multi-tiers
ILes EJB
IUn exemple
Rappel
La programmation par composant
ILimites de la programmation usuelle
programming in the small
tout est la la charge du programmeur
construction des diffrents modules
dfinition des instances
interconnexions des modules
structure de lapplication peu visible
ensemble des fichiers de codes ncessaire
volution / modification difficile
changement du mode de communication
volution, ajout, suppression de fonctionnalits
modification du placement
dveloppement, gnration des excutables, dploiement
pas ou peu doutils pour les applications rparties
Rappel
La programmation par composant
IProgrammation constructive (ou par composition)
programming in the large
Motivation : rutilisation de logiciel
intgration de modules logiciels existants
construction d'applications rparties par assemblage de
modules logiciels existants
programmation gros grain ("programming in the large")
Approche : description de l'architecture de l'application l'aide d'un
langage dclaratif
modle de construction des composants
composants : interfaces, attributs, implmentation
description des interactions entre composants (connecteurs)
description de variables d'environnement
(placement, regroupement, scurit, etc.)
Les composants...
I Quest-ce que cest ?
Dfinition usuelle
module logiciel autonome pouvant tre install sur diffrentes plates-formes
qui exporte diffrents attributs, proprits ou mthodes
qui peut tre configur
capable de sauto-dcrire
Intrt : tre des briques de base configurables pour permettre la
construction dune application par composition
I Quelques composants clbres (ou qui vont ltre)
COM / DCOM, Java Beans,
Enterprise Java Beans, Composants CORBA
I Comment coopre un composant
Ce que fournit le composant (entres)
composantes, interfaces, oprations, proprits
Ce quutilise le composant (dpendances)
composition et rfrences aux autres composants
modes de communication des connecteurs
(synchrone, asynchrone, flots)
I Proprits configurables du composant
I Contraintes techniques (QoS)
middleware : placement, scurit, transaction
internes : cycle de vie, persistance
implantation : OS, bibliothques, version
Les modles de composants :
caractrisation dun composant
Composant
Contraintes
techniques
U
t
i
l
i
s
e
a
s
y
n
c
s
y
n
c
Proprits
configurables
F
o
u
r
n
i
t
a
s
y
n
c
s
y
n
c
Les modles de composants :
conteneurs et structures daccueil
IConteneur
encapsulation dun composant (et ses composantes)
prise en charge (masque) les services systmes
nommage, scurit, transaction, persistance ...
prise en charge partielle des connecteurs
invocations et vnements
techniquement par interposition (ou dlgation)
IStructures daccueil
espace dexcution des conteneurs et des composants
mdiateur entre les conteneurs et les services systmes
des + comme le tlchargement de code (navigateur)
Les modles de composants :
conteneurs et structures daccueil
Composant
Conteneur
Composant
Conteneur
Connecteur
synchrone
Connecteur
asynchrone
Structure d'accueil
Client
Utilise
Middleware + Services
Composant
Conteneur
Structure d'accueil
Les modles de composants :
de linstallation lintrospection
I Installer les composants
technologie de packaging
production des conteneurs
I Crer les composants
par des fabriques (maisons / home )
configuration des valeurs initiales
I Retrouver les composants
services de dsignation (Nommage ou Vendeur) ou maisons
I Utiliser
invocation synchrone et vnements
I Introspection
dcouvrir leurs APIs (fonctionnelle)
dcouvrir les connecteurs (structurelle)
Construction par assemblage de
composants
IConstruction par assemblage
plutt que ingnierie de dveloppement
rduire les besoins en comptence technique
focaliser lexpertise sur les problmes du domaine
ILangage de description dArchitecture
capturer les composants
fonctionnalits et besoins
capturer les connecteurs
composition et modes de communication
impdance entre composants => adaptateurs
Cest le point faible des solutions industrielles !
Rappel
Les Architectures Multi-tiers
Clients lgers
Browsers Web (HTTP/HTML)
Applets (RMI)
Contrle ActiveX (DCOM)
Clients CORBA (IIOP)
Serveurs Applicatifs
Prsentation, Outils Mtiers
CGI, Servlet,
Source de Donnes
Bases de Donnes Relationnelles ou Objets
Intgres (ERP), Legacy,
Annuaires (LDAP),
Flux (fournisseurs comme Reuter, Bloomberg) ...
Motivation pour
les Serveurs d Application
I Objectifs
Simplifier le dveloppement d architectures multi-tiers
prsentation traitement (logique) donnes
I Principe
Le dvelopper se concentre sur la logique de son application
le reste est ralis par la plate-forme d accueil
Sessions, Transactions, Persistance, Securit, Nommage, Charge, ...
I Programmation par composition de la logique application
Solutions propritaires
Solution ouverte : DCOM, EJB, ...
Indpendance Composants /Plateforme d accueil
Qu est que les EJB ?
Enterprise Java Bean
I1) Architecture permettant la cration
dapplications rparties
I2) Composant excut sur un serveur et appel
un client distant
IRemarque
rien voir avec les JavaBean
qui sont des composants ct client
Enterprise JavaBeans
IRendre une application
facile dvelopper, dployer et administrer
indpendamment de la plate-forme permettant son excution
Un EB (EnterpriseBean) nest pas spcifique de la plate-
forme dans laquelle il est utilis
Le dploiement dun EB se fait sans recompilation ou
modification du code source
Enterprise Java Beans
IEJB spcifications
dfinition d`une architecture pour construire une application
en Java dont la partie serveur est construite laide de
composants appel Entreprise Beans (EB)
Architecture = ensemble dinterfaces
ICaractristiques principales des EB
crit une fois, sexcute partout
composants serveurs spcialiss crits en Java
c.f. objets mtiers de CORBA
IEJB est la partie centrale de la plate-forme
Plate-forme Enterprise Java
Composants 1ava beans
Plate-forme E1B
(Conteneur + Serveur)
Plate-forme Serveur (Unix, NT) + 1VM + 1DK
1TA
Composants Enterprise 1ava Beans
... 1NDI 1MS
1DBC
RMI (1RMP, IIOP)
...
Architecture de Serveur EBJ
800
Re|et|onne|
800
0bjet
8erveur EJ 8erveur
web
8erv|et
6||ent
hTHL
6||ent 60RA
(C++, Java, VB, ..)
6||ent Jeve
Application,Applet
+773
,,23
50,
24/
;$
64/
;$
E
6onte|ner
E
6onte|ner
50,
6||ent 060H
ActiveX
'&20
JTH
EJB
Caractristiques principales
Larchitecture EJB identifie les lments suivants :
composants logiciels ou beans (EB),
conteneurs,
serveurs,
clients.
Les conteneurs isolent les beans du client et dune
implmentation spcifique dun serveur
Rappel : les beans sont dans la partie serveur
Conteneurs et serveurs implmentent les mcanismes de
bas niveau utiliss par les applications
transactions, persistance, gestion mmoire, scurit,
EJB
Modle dexcution
EJB
Caractristiques principales
IEJB sintresse aux activits lies au
dveIoppement, au dpIoiement et
lexcution dune application
IEJB dfinit diffrents rIes associs aux
diffrentes parties intervenant dans la
production dune application
IEJB dfinit des contrats associs un bean
Ces contrats sont passs entre le conteneur et les clients qui
utilisent le bean.
=> ce sont des rgles (obligations) qui doivent tre respectes
par le fournisseur de lEB et de conteneur
EJB
Les diffrents rles
Fournisseur d`EB
Assembleur d`application
L`installateur
Fournisseur de conteneur E1B
Fournisseur de serveur E1B
Dveloppement
de l`application
Enterprise Bean (EB)
Application
Conteneur
Serveur
Dploiement
et excution
Utilise
Produit
Dveloppement
du serveur
E1B
I Fournir un modle de dveloppement uniforme
pour les applications qui utilisent les
composants EB
Contrat cote client
fournir une vue uniforme du bean au client. En
particulier cette vue est indpendante de la plate-forme
de dploiement
Contrat cote conteneur
permettre la portabilit des beans sur diffrents serveurs
EJB
Contrat cote packaging` (e/b-/arear file)
fournir un format de fichier standard pour packager
les beans. Ce format doit tre supporter par tous les
outils lis aux EJB
EJB contrats
client
Enterprise
Bean
EBJ conteneur
&RQWUDW
FRQWHQHXU
EJB serveur
&RQWUDW
FOLHQW
)LFKLHUHMEMDUHDU
&RQWUDW
SDUFNDJLQJ
EJB
Le contrat cot client
I Localiser le bean
utilisation de JNDI
I Utiliser le bean
utilisation de linterface standard fournie par lEB provider
Home Interface
mthodes lies la gestion du bean : create, remove, finaer, ...)
Remote Interface (mthodes de lapplication)
Le container implmente le mcanisme de
dlgation permettant de faire suivre lappel au
bean
le client ne communique pas directement avec le bean mais avec le
container
EJB
Le contrat du conteneur
LEJB conteneur permet
gestion du cycle de vie, gestion de ltat, scurit, transaction
distribue, concurrence, extensibilit
ces services appellent des mthodes fournies par le bean (callback
methods)
Les conteneurs grent 2 types de beans
Session beans
Entity beans
Session beans
sont non persistant (short-lived)
associ un seul client
un flot d`excution est cr pour
chaque appel de mthode
stateless sessions bean (sans tat)
pas de donne interne, inutile de le rendre passif, peut tre partag par
plusieurs clients
plusieurs appels de mthodes en provenance du mme client
stateful sessions bean (avec tat)
dtruits aprs un arrt (ou une panne) du serveur EJB
Remarque
les stateful SB peuvent tre inclus dans une transaction
Entity beans
I Reprsentent les donnes dune base de donnes
en gnral, une ligne d une table relationnelle (SGBD-R)
ou un objet persistant (SGBD-OO)
I sont persistant (long-lived)
la gestion de la persistance peut tre faite par le bean (bean managea
persistence) ou dlgue son conteneur (container managea persistence)
I acceptent les accs multiples effectus par plusieurs
clients
gestion de la concurrence
diffrents niveaux d isolation
I peuvent participer des transactions
I survivent aux pannes dun serveur EJB
les pannes sont transparentes aux clients
Cycle de vie dun bean
Le conteneur gre le cycle de vie dun bean
Il fournit
administration du bean (Home implementation)
permet aux clients
de crer, dtruire et rechercher un objet EJB
appelle les oprations correspondantes
fournies par le bean (callbacks)
gestion de ltat
Activation
le bean est charg en mmoire
Passivation (Dsactivation )
le conteneur peut sauvegarder ltat du bean
Gestion des Ressources
Pool d instances
I Le serveur EJB maintient un pool d instance de bean
Cycle de Vie d un Session Bean Stateless
(sans tat)
Gestion des Ressources
Instance Swapping (i)
I Les instances de stateless SB sont pris dans un pool chaque appel
puis remis dans le pool aprs
Gestion des Ressources
Instance Swapping (ii)
Cycle de Vie d un Session Bean Stateful
(avec tat)
Gestion des Ressources
Le mcanisme d Activation/Passivation
I Rappel : le Stateful SB maintient un tat conversationnel
I Pour accepter un trs grand d instances simultanment, le
serveur d EJB sauvegarde l tat d instances non actives
(passivation) et restaure leur tat lors qu un client appelle
une mthode sur l instance (activation)
I mthodes callback apples par le container
ejbPassivate(), ejbActivate()
implant par srialisation ou autre
vers un fichier de swap, une table de swap dans un SGBD, ...
Remarque
mme principe que la mmoire virtuelle des SE
Gestion des Ressources
Le mcanisme d Activation/Passivation
Gestion des Ressources
Le mcanisme d Activation/Passivation
Cycle de Vie d un Entity Bean
Persistance (Entity Bean)
I L Entity Bean correspond une donne
stocke dans une source de donnes
I Il faut assurer la correspondance (mapping)
avec la source de donnes
Base de Donnes Relationnelle
correspondance (mapping) entre chaque champ d une EB vers une colonne
d une ligne d une table, d une vue, d une requte multi-table
indiquer la cl primaire (PK) qui identifie la ligne correspondante un EB
Base de Donnes Objet
plus ou moins direct
Base de Donnes Objet-Relationnelle
Legacy
Fichiers (IMS, CICS, Btrieve,), ERP, Annuaire LDAP,
requiert des wrappers spcifiques
Persistance (Entity Bean)
Prise en charge de la persistance
IPersistance gre par le bean (bean-managed)
le fournisseur de lEntity Bean crit les oprations daccs aux donnes
permettant de grer la persistance dans les callback appropris (e/bCreate,
e/bStore, e/bLoaa, e/bFina ...)
en utilisation par exemple JDBC
IPersistance gre par le conteneur (container-managed)
le fournisseur de lEntity Bean utilise les services du conteneur
(container managed fields)
et prcise le support utilis pour la persistance
le code daccs la base de donne est dlgu au conteneur
IDans les 2 cas
le conteneur est responsable de la cohrence entre ltat du bean et de
ltat sauvegard dans la base de donnes
Transaction
Gestion Declarative
ISupport de larchitecture XA (X/Open DTP)
extensions standards JDBC 2.0
Java Transaction API (JTA)
I Modle de transaction plat
pas de transactions imbriques (nested)
I Gestion dclarative des transactions
lattribut transactionnel associ aux mthodes des Ebs est affect
soit lors de la phase dimplmentation du bean,
soit lors de son dploiement
un bean peut aussi contrler explicitement les transactions (JTA)
un client peut aussi contrler explicitement les transactions (JTA)
concerne les Entity Beans et ventuellement les Stateful Session B.
From Gerara Janaome, BullSoft
Transaction
Attributs transactionnels
Beans Tr ansac t i on
At t r i but e
Cl i ent s Tr ansac t i on
Tr ansac t i on assoc i at ed
beans met hod
TX_NOT_SUPPORTED
None
T1
None
None
TX_REQUIRED
None
T1
T2
T1
TX_SUPPORTS
None
T1
None
T1
TX_REQUIRES_NEW
None
T1
T2
T2
TX_BEAN_MANAGED
None
T1
TX_MANDATORY
None
T1
Error
T1
TX_NEVER
None
T1
None
Error
Transaction
Exemple
[Monson, p231]
Interface javax.ejb.SessionSynchronization
IInterface optionnelle pour les Stateful Session Bean
IMthodes de callback
ragissant au comportement de la transaction
afterBegin() juste aprs le UserTransaction.begin()
beforeCompletion() avant le commit()
afterCompletion(boolean flag) aprs le commit() ou rollback()
IUsage
Rendre persistant ltat dun SessionBean
Fiabiliser lenvoi de mail

Gestion de la Concurrence
IAccs de plusieurs clients un Entity Bean
I Plusieurs problmes
Lecture Sale (Dirty Read)
lecture des modifications d une autre transaction qui avortera
Lecture non rptable (Non repeatable read)
la transaction lit successivement deux valeurs diffrentes d une mme donne
Lecture Fantme (Phantom Read)
une transaction ne lit pas des donnes insres prcdenment
Client 1
Client 2
EJB Object
EJB Server
Instance Pool
instance bean
Gestion de la Concurrence
I La source de donnes verrouille la donne
correspondant en fonction du type d accs
Read Lock
la valeur n est pas change par les autres transactions
Write Lock
la valeur n est pas change par d autres transactions
Exclusive Write Lock
les autres transactions sont bloques jusqu au relachement
Snapshot
chaque transaction possde une valeur fige
I Une transaction sera bloque jusqu au relchement du
verrou en fonction du niveau d isolation souhait
Gestion de la Concurrence
I Dfinition des niveaux d isolation de la transaction
ISOLATION LEVEL (mme dfinition que SQL et JDBC)
|so|et|on Leve| 8e|e Non Rpteb|e Fentmes
TRANSACTION_READ_UNCOMMITED oui oui oui
TRANSACTION_READ_COMMITED non oui oui
TRANSACTION_REPEATABLE_READ non non oui
TRANSACTION_SERIALIZABLE non non non
JTM
JTM
JTM JTM JTM
B1
B3 B2
B1 B2 B3
B3 B2 B1
B3 B2 B1
Cas 1
Cas 4
Cas 3
Cas 2
Serveur EJB 3 Serveur EJB 2 Serveur EJB 1
Serveur EJB 1
Serveur EJB 3 Serveur EJB 2 Serveur EJB 1
Serveur EJB
Serveur EJB 2 Serveur EJB 3
Rpartition
JTM
Scurit
La gestion de la scurit est dlgu au maximum au
conteneur
objectif : simplifier la programmation du bean, amliorer la portabilit
Le support de la scurit est bas sur
lAPI scurit de Java (/avax.security)
les mthodes lies la scurit peuvent tre implment par le
conteneur (/avax.e/b.EJBContext interface)
utilisation dattributs de scurit dfini dans le descripteur du bean
utilis lors de la phase de dploiement
runAsMoae . &/,(17B,'(17,7<63(&,),('B,'(17,7<6<67(0B,'(17,7<
RunAsIaentity : <identit> si 63(&,),('B,'(17,7<
Scurit
Exemple
[Monson, p75]
Principaux bnfices
Application complexe facile crire
gestion des transaction de manire dclarative
gestion de la persistance
gestion intgr de la scurit
gestion de la rpartition
La plate-forme et le bus logiciel (middleware) sont
indpendants des applications
Extensibilit du modle
Processus de Dveloppement, de
Dploiement et de Excution
I Dveloppement dun EB
Ecrire la classe Primary Key (pour un entity bean)
Ecrire la Home interface
Ecrire la Remote interface
Ecrire limplmentation du bean
Compiler ces classes et interfaces
I Dploiement du EB
Construire le descripteur de dploiement (deploytool)
Construire le fichier darchive .ear
Vrifier le fichier d archive
I Excution du EB
Activer j2ee
Excuter le client
qui peut tre une servlet (ventuellement dans un .war dploy)
ou une application Java
Exemple:
Beans Bancaires
I Gestion de comptes bancaires
Compte Bancaire (Composant persistant Entity Bean)
Interface du Bean(vue par le client) Account.java
pub||c |nterfece Account extends EJ0bject {
pub||c doub|e gete|ence() throws RemoteExcept|on;
pub||c vo|d sete|ence(doub|e d) throws RemoteExcept|on;
pub||c 8tr|ng get6ustomer() throws RemoteExcept|on;
pub||c vo|d cred|t(doub|e d) throws RemoteExcept|on;
pub||c vo|d deb|t(doub|e d) throws RemoteExcept|on; }
Transfert de Fond (Composant session Session Bean)
Interface du Bean (vue par le client) Transfer.java
pub||c |nterfece Trensfer extends EJ0bject {
pub||c doub|e trensferFund(AccountPK ksrc, AccountPK ktrg,
doub|e d) throws RemoteExcept|on;
pub||c doub|e trensferFund(Account src, Account trg,
doub|e d) throws RemoteExcept|on; }
Architecture de lapplication
EJB Home object
EJB Object
conteneur
Espace dadressage du conteneur
Espace dadressage du client
EJB home stub
EJB object stub
Client
distant
RMI ext
RMI ext
50,H[W extension ae RMI afin ae propager le contexte ae la transaction comme un
paramtre supplementaire (ou utilisation ae IIOP)
1TM
Oracle ou
Instant DB
E1B
Compte
Bancaire
1DBC + XA
Exemple d Entity Bean
Account
Spcification du bean
entity bean Account
gestion de la persistance gre par le conteneur
Le concepteur doit crire le code suivant
AccountHome.java
linterface de gestion du bean - Home interface
Account.java
linterface daccs distance - Remote Interface
AccountPK.java
La classe pour la gestion des cls daccs aux diffrents comptes - Primary Key
class (ncessaire uniquement pour les entity beans, encapsule le champ reprsentant la
cl primaire dun entity bean dans un objet)
AccountBean.java
le code du bean
le descripteur pour le dploiement
AccountPK.java
La cl primaire du compte
reprsente la cl primaire
nest pas toujours ncessaire
cas dune cl primaire non compose
mais la classe doit implementer linterface Serializable
peckege enk;
pub||c c|ess AccountPK |mp|ements jeve.|o.8er|e||zeb|e {
pub||c |nt brenchno;
pub||c |nt eccno;
pub||c AccountPK(|nt brenchno, |nt eccno) {
th|s.brenchno = brenchno; th|s.eccno = eccno; }
pub||c AccountPK() { }
pub||c 8tr|ng to8tr|ng() {
return 8tr|ng.ve|ue0f(brenchno)+"."+ 8tr|ng.ve|ue0f(eccno); }
}
Account.java
l interface distance (remote)
donne les prototypes des mthodes business
doit tendre linterface javax.ejb.EJBObject
peckege enk;
pub||c |nterfece Account extends EJ0bject {
pub||c doub|e gete|ence() throws RemoteExcept|on;
pub||c vo|d sete|ence(doub|e d)
throws RemoteExcept|on, AccountExcept|on ;
pub||c 8tr|ng get6ustomer() throws RemoteExcept|on;
pub||c vo|d cred|t(doub|e d)
throws RemoteExcept|on, AccountExcept|on;
pub||c vo|d deb|t(doub|e d)
throws RemoteExcept|on, AccountExcept|on;
}
Account.java
l interface distance (remote)
I Remarques
les mthodes setX et getX correspondent un attribut X
les paramtres de mthode et les valeurs de retour doivent tre de type
primitif, serialisable ou tendant/implmentant java.rmi.Remote
Exceptions
les mthodes doivent comporter au minimum RemoteException
exception systme : SQL, Naming, ...
des exceptions applicatives peuvent tre ajouts
peckege enk;
pub||c c|ess AccountExcept|on extends jeve.|eng.Except|on {
pub||c AccountPK pk;
pub||c AccountExcept|on () { super(); }
pub||c AccountExcept|on (AccountPK pk) { super(); th|s.pk=pk; }
pub||c AccountExcept|on (msg) { super(msg); } }
AccountHome.java
l interface maison (home)
donne les prototypes des mthodes
de cration/suppresion et de recherche
quivalent aux Factory de CORBA
doit tendre linterface javax.ejb.EJBHome
peckege enk;
pub||c |nterfece Accounthome extends EJhome {
pub||c Account creete (|nt brenchno, |nt eccno, 8tr|ng customer, doub|e be|ence)
throws RemoteExcept|on, 6reeteExcept|on;
pub||c Account f|ndyPr|meryKey (AccountPK pk)
throws RemoteExcept|on, F|nderExcept|on;
pub||c Enumeret|on f|ndLergeAccounts (doub|e d)
throws RemoteExcept|on, F|nderExcept|on;
pub||c Enumeret|on f|ndy6ustomer (8tr|ng str)
throws RemoteExcept|on, F|nderExcept|on;
}
AccountHome.java
l interface maison (home)
IRemarques sur les mthodes de cration
comporte javax.ejb.CreateException
javax.ejb.DuplicateKeyExceptionest leve sil existe dj une
donne avec la cl primaire
peut ne pas apparatre dans linterface Home
signifie que les donnes ne peuvent tre cre
que depuis la source de donnes (SGBD)
par exemple, ordre SQL INSERT
AccountHome.java
l interface maison (home)
IRemarques sur mthode de recherche
comporte javax.ejb.FinderException
la mthode de recherche sur cl findByPrimaryKey retourne
un Account
javax.ejb.ObjectNotExceptionest leve si aucun objet nest
trouv
les autres findByPrimaryKey retournent une Enumeration de
Account ou null si aucun objet nest trouv
AccountBean.java
l implantation de l Entity Bean
doit tendre linterface javax.ejb.EntityBean
I donne limplantation
des mthodes de gestion du cycle de vie (callback)
ejbActivate() appel lors de lactivation
ejbPassivate() appel lorsde la passivation
ejbLoad() appel pour charger ltat de lEB depuisla BD
ejbStore() appelpour dcharger ltat delEB versla BD
ejbRemove() appel quand le client appelle remove()
setEntityContext() appel par le container quand linstance est cre
unsetEntityContext() appelpar le container avant de supprimer linstance
des mthodes business de linterface Account
getbalance(), setbalance(), , credit(), debit() appelespar le client
des mthodes de creation de linterface AccountHome
ejbCreate() ejbPostCreate()
des mthodes de recherche de linterface AccountHome
ejbFindByPrimaryKey() ejbFindLargeAccounts(), ejbFindByCustomer()
AccountBean.java
l implantation de l Entity Bean
ILes attributs
peckege enk;
pub||c c|ess Accounteen |mp|ements Ent|tyeen {
|| |es ettr|buts
pr|vete trens|ent Ent|ty6ontext ctx;
pub||c |nt brenchno; || PK
pub||c |nt eccno; || PK
pub||c 8tr|ng customer;
pub||c doub|e be|ence;
...
AccountBean.java
l implantation de l Entity Bean
ILes mthodes de cycle de vie
requises par linterface EntityBean
pub||c vo|d ejbAct|vete() { }
pub||c vo|d ejb0estroy() { }
pub||c vo|d ejbPess|vete() { }
pub||c vo|d ejbLoed() { }
pub||c vo|d ejb8tore() { }
pub||c vo|d setEnt|ty6ontext (Ent|ty6ontext ctx) { th|s.ctx = ctx; }
pub||c vo|d unsetEnt|ty6ontext () { th|s.ctx = nu||; }
...
AccountBean.java
l implantation de l Entity Bean
ILes mthodes business
correspond linterface distante
pub||c doub|e gete|ence() throws RemoteExcept|on { return be|ence;}
pub||c vo|d sete|ence(doub|e d) throws RemoteExcept|on, AccountExcept|on{
|f (d<0) throw new AccountExcept|on(new AccountPK(th|s.brenchno, th|s.eccno));
be|ence = d; }
pub||c 8tr|ng get6ustomer() throws RemoteExcept|on { return customer;}
pub||c vo|d cred|t(doub|e d) throws RemoteExcept|on, AccountExcept|on{
|f (d<0) throw new AccountExcept|on(new AccountPK(th|s.brenchno, th|s.eccno));
be|ence += d; }
pub||c vo|d deb|t(doub|e d) throws RemoteExcept|on, AccountExcept|on{
|f (d<0 && (be|ence-d<0))
throw new AccountExcept|on(new AccountPK(th|s.brenchno, th|s.eccno));
be|ence -= d; }
...
AccountBean.java
l implantation de l Entity Bean
ILes mthodes de cration
pub||c vo|d ejb6reete ( |nt brenchno, |nt eccno,
8tr|ng customer, doub|e be|ence) throws
6reeteExcept|on {
|f(be|ence<0) throw new 6reeteExcept|on();
th|s.brenchno=brenchno; th|s.eccno=eccno;
th|s.customer=customer; th|s.be|ence=be|ence;
}
pub||c vo|d ejbPost6reete ( |nt brenchno, |nt eccno,
8tr|ng customer, doub|e be|ence) { }
}
ILes mthodes de recherche
sont gnrs au dploiement par le container
ejbF|ndyPr|meryKey (), ejbF|ndLergeAccounts (), ejbF|ndy6ustomer ()
AccountBean.java
Remarque sur les mthodes de cration
pour chaque mthode create(X) de linterface distante
il y a un couple ejbCreate(X) et ejbPostCreate(X)
ejbPostCreate(X) effectue des complments la cration
AccountBean.java
Remarque sur les mthodes de cration
AccountBean.java
Remarque sur les mthodes de synchronisation ejbLoad() et
ejbStore()
I Container-Managed Persistence
en principe, ne font rien
nanmoins, elles peuvent tre compltes
pour formater des donnes commplexes,
pub||c c|ess 8tr|ngseen |mp|ements Ent|tyeen {
pr|vete trens|ent Ent|ty6ontext ctx;
pr|vete trens|ent vector msgvec;
pub||c 8tr|ng msgs; || Pers|stent f|e|d dens une co|onne vAR6hAR
pub||c vo|d ejbLoed() {
8tr|ngToken|zer st=new 8tr|ngToken|zer(msgs,"-");
wh||e(st.hesHoreTokens()) msgvec.eddE|ement(st.nextToken());
} ... }
Descripteur de dploiement (addendum)
ISi la persistance est gre par le conteneur, le
Bean fournisseur/installateur doit spcifier, dans
lenvironnement les proprits du Bean
le lien avec la base de donnes
datasource.name jdbc_oracle1
db.TableName Account
db.Field.branchno branchid
db.Field.accno accountid
db.Field.customer customer
db.Field.balance balance
la mthode de recherche du bean
db.Finder.findLargeAccount where balance > ?
db.Finder.findByName where customer like ?
AccountBean.java
Remarque sur la persistance gre par le bean
(Bean-Managed Persistence)
Les mthodes de cration, de suppression, de synchronisation
et de recherche doivent tre cod par le dveloppeur
I Exemple avec ejbCreate()
pub||c vo|d ejb6reete ( |nt brenchno, |nt eccno, 8tr|ng customer, doub|e
be|ence)
throws 6reeteExcept|on {
|f(be|ence<0) throw new 6reeteExcept|on();
th|s.brenchno=brenchno; th|s.eccno=eccno;
th|s.customer=customer; th|s.be|ence=be|ence;
6onnect|on con = nu||; Prepered8tetement ps = nu||;
try { con = get6onnect|on(); ps = con.prepere8tetement(
"|nsert |nto Account (brench|d,eccount|d,customer,be|ence) ve|ues (?,?,?,?)");
ps.set|nt(1, brenchno); ps.set|nt(2, eccno);
ps.set8tr|ng(3,customer); ps.set0oub|e(4,be|ence);
|f (ps.executeUpdete() != 1) {
throw new 6reeteExcept|on ("Fe||ed to edd Account to detebese");
} cetch (80LExcept|on se) { throw new 6reeteExcept|on (se.getHessege());
}
AccountBean.java
Remarque sur la persistance gre par le bean
(Bean-Managed Persistence)
I Exemple avec ejbLoad()
pub||c vo|d ejbLoed () throws RemoteExcept|on{
AccountPK pk = (AccountPK) context.getPr|meryKey();
6onnect|on con = nu||; Prepered8tetement ps = nu||; Resu|t8et resu|t = nu||;
try { con = get6onnect|on(); ps = con.prepere8tetement(
"se|ect customer,be|ence from Account where brench|d=? end
eccount|d=?");
ps.set|nt(1,pk.brenchno); ps.set|nt(2,pk.eccno);
resu|t = ps.execute0uery();
|f(resu|t.next()){
brenchno=pk.brenchno; eccno=pk.eccno;
customer = resu|t.get8tr|ng("customer");
be|ence = resu|t.get0oub|e("be|ence");
}e|se{ throw new 0bjectNotFoundExcept|on("6ennot f|nd Account "+pk); }
...
Client
Create(...)
Account Ref
Account
Home
Account
Bean
newInstance()
setEntityContext()
ejbCreate(...)
Container
Creation des instances
Home interface
Le client (Application Java)
|mport benk.*; ...
pub||c c|ess 6||ent6reete{
pub||c stet|c vo|d me|n(8tr|ng[} ergv){
Accounthome eh; Account e;
try{ || rechercher |'|nterfece EJ home |nterfece
|n|t|e|6ontext ctx = new |n|t|e|6ontext();
0bject objref = ctx.|ookup("enkAccount");
eh = (Accounthome)Porteb|eRemote0bject.nerrow(objref, Accounthome.c|ess);
} cetch (Nem|ngExcept|on) { Nem|ngExcept|on.pr|nt8teckTrece(); }
|| crer une |nstence d'ent|t
e=eh.creete(ergv[0},ergv[1},ergv[2},0);
|| |nvoquer une mthode "bus|ness"
8ystem.err.pr|nt|n(e.get6ustomer());
}
Le client (Application Java) EJB1.1
|mport benk.*; ...
pub||c c|ess 6||ent6reete{
pub||c stet|c vo|d me|n(8tr|ng[} ergv){
Accounthome eh; Account e;
try{ || rechercher |'|nterfece EJ home |nterfece
|n|t|e|6ontext ctx = new |n|t|e|6ontext();
0bject objref = ctx.|ookup(" java:comp/env/ejb/enkAccount");
eh = (Accounthome)Porteb|eRemote0bject.nerrow(objref, Accounthome.c|ess);
} cetch (Nem|ngExcept|on) { Nem|ngExcept|on.pr|nt8teckTrece(); }
|| crer une |nstence d'ent|t
e=eh.creete(ergv[0},ergv[1},ergv[2},0);
|| |nvoquer une mthode "bus|ness"
8ystem.err.pr|nt|n(e.get6ustomer());
}
Mthodes de lapplication
Remote interface
Client
Account
EJB Object
Begin
setBalance()
commit
setBalance()
Account
Bean
Le client (Application Java)
|mport benk.*; ...
pub||c c|ess 6||ent8ete|ence{
pub||c stet|c vo|d me|n(8tr|ng[} ergv){
Accounthome eh; Account e;
try{ || rechercher |'|nterfece EJ home |nterfece
|n|t|e|6ontext ctx = new |n|t|e|6ontext();
0bject objref = ctx.|ookup("enkAccount");
eh = (Accounthome)Porteb|eRemote0bject.nerrow(objref, Accounthome.c|ess);
} cetch (Nem|ngExcept|on) { Nem|ngExcept|on.pr|nt8teckTrece(); }
|| crer une |nstence d'ent|t
try{
e=eh.f|ndyPr|meryKey(new AccountPK(ergv[0},ergv[1}));
} cetch (F|nderExcept|on) { F|nderExcept|on.pr|nt8teckTrece(); }
|| |nvoquer une mthode "bus|ness"
e.sete|ence(ergv[2});
}
Le client (Servlet 1/2)
|mport ...
pub||c c|ess 8ete|ence8erv|et extends http8erv|et {
Accounthome eh;
pub||c vo|d |n|t(8erv|et6onf|g conf|g) throws 8erv|etExcept|on{
try{
|n|t|e|6ontext ctx = new |n|t|e|6ontext();
0bject objref = ctx.|ookup("enkAccount");
eh = (Accounthome)Porteb|eRemote0bject.nerrow(objref, Accounthome.c|ess);
} cetch (Nem|ngExcept|on) { Nem|ngExcept|on.pr|nt8teckTrece(); }
}
pub||c vo|d destroy() {
8ystem.out.pr|nt|n("0estroy");
}
...
Le client (Servlet 2/2)
pub||c vo|d do0et (http8erv|etRequest request, http8erv|etResponse response)
throws 8erv|etExcept|on, |0Except|on {
response.set6ontentType("text|htm|");
Pr|ntwr|ter out = response.getwr|ter();
out.pr|nt|n("<hTHL><hEA0><T|TLE>8ete|ence<|T|TLE><|hEA0><00Y>");
|nt eccno = (new |nteger(request.getPeremeter("A66N0")).|ntve|ue();
|nt brenchno = (new |nteger(request.getPeremeter("RAN6hN0")).|ntve|ue();
AccountPK pk=new AccountPK(brenchno,eccno);
doub|e newbe|ence=(new 0oub|e(request.getPeremeter("ALAN6E")).doub|eve|ue();
try{
Account e=eh.f|ndyPr|meryKey(pk); e.sete|ence(newbe|ence);
out.pr|nt|n("<h1>New e|ence<|h1>");
out.pr|nt|n("<P>Account: " + pk + "<P><P>New e|ence: " + e.gete|ence() + "<P>");
} cetch (F|nderExcept|on) { out.pr|nt|n("<h1>Prob|em<|h1><P>No Account: " + pk + "<P>"); }
out.pr|nt|n("<|00Y><|hTHL>"); out.c|ose();
}}
Home interface
Accounthome
Account
Accounteen
"enkAccount"
TX_8UPP0RT8
0ete8ource neme
...
Remote interface
Enterprise Bean
BeanHomeName
ControlDescriptors
Env. properties
Account
Deployment
Descriptor
ContainerManagedFields
brenchno, eccno,
customer, be|ence
Descripteur de dploiement
Gestion dclarative
des transactions
Support du conteneur pour les transactions
le conteneur utilise les attributs de transaction pour raliser la politique
souhaite
Attributs des transactions
TX_NOT_SUPPORTED
TX_REQUIRED
TX_SUPPORTS
TX_REQUIRES_NEW
TX_BEAN_MANAGED
TX_MANDATORY
TX_NEVER
Gestion des transactions
Le conteneur gre les
transaction laide des
classes dinterposition qui
sont gnres
automatiquement
preInvoke() {
case TX_REQUIRES_NEW:
clientTransaction=current.suspend();
Current.begin();
postInvoke(){
case TX_REQUIRES_NEW:
Current.commit();
Current.resume(clientTransaction);
BullBean.java
public void setBalance(double d){
this.preInvoke();
AccountBean.setBalance(d);
this.postInvoke();
BullBeanAccount.java
Exemple de Session Bean
Transfer
Spcification du bean
session bean Transfer
Le concepteur doit crire le code suivant
TransferHome.java
linterface de gestion du bean - Home interface
Transfer.java
linterface daccs distance - Remote Interface
TransferBean.java
le code du bean
le descripteur pour le dploiement
pas de TransferPK !!
Transfer.java
l interface distance (remote)
donne les prototypes des mthodes business
doit tendre linterface javax.ejb.EJBObject
peckege enk;
pub||c |nterfece Trensfer extends EJ0bject {
pub||c vo|d fundTrensfer(AccountPK src, AccountPK trg, doub|e emount)
throws RemoteExcept|on, AccountExcept|on;
}
TransferHome.java
l interface maison (home)
donne les prototypes des mthodes
de cration
doit tendre linterface javax.ejb.EJBHome
peckege enk;
pub||c |nterfece Trenferhome extends EJhome {
pub||c Trenfer creete () throws RemoteExcept|on, 6reeteExcept|on;
}
TransferBean.java
l implantation du Session Bean
doit tendre linterface javax.ejb.SessionBean
I donne limplantation
des mthodes de gestion du cycle de vie (callback)
ejbActivate() appel lors de lactivation
ejbPassivate() appel lorsde la passivation
ejbLoad() {} inutilis mais prsent
ejbStore() {} inutilis mais prsent
ejbRemove() appel quand le client appelle remove()
setEntityContext() appel par le container quand linstance est cre
unsetEntityContext() appelpar le container avant de supprimer linstance
des mthodes business de linterface Account
fundTransfer() appelepar le client
des mthodes de creation de linterface AccountHome
ejbCreate() ejbPostCreate()
TransferBean.java
l implantation du Session Bean
peckege enk;
pub||c c|ess Trensfereen |mp|ements 8ess|oneen {
pr|vete trens|ent Ent|ty6ontext ctx;
pr|vete Accounthome eh;
pub||c vo|d fundTrensfer(AccountPK src, AccountPK trg, doub|e emount)
throws RemoteExcept|on, AccountExcept|on {
try { Account esrc=eh.f|ndyPr|meryKey(src);
} cetch(F|nderExcept|on e){ throw new AccountExcept|on(src); }
try { Account etrg=eh.f|ndyPr|meryKey(trg);
} cetch(F|nderExcept|on e){ throw new AccountExcept|on(trg); }
esrc.deb|t(emount);
etrg.cred|t(emount);
}
...
TransferBean.java
l implantation du Session Bean
...
||mthodes requ|ses per |'|nterfece 8ess|oneen
pub||c vo|d ejbAct|vete() { }
pub||c vo|d ejb0estroy() { }
pub||c vo|d ejbPess|vete() { }
pub||c vo|d ejbLoed() { }
pub||c vo|d ejb8tore() { }
pub||c vo|d setEnt|ty6ontext (Ent|ty6ontext ctx) { th|s.ctx = ctx; }
pub||c vo|d unsetEnt|ty6ontext () { th|s.ctx = nu||; }
...
TransferBean.java
l implantation du Session Bean
pub||c vo|d ejb6reete () throws 6reeteExcept|on {
try{
|n|t|e|6ontext ctx = new |n|t|e|6ontext();
0bject objref = ctx.|ookup("Trensfer");
th|s.eh = (Accounthome)Porteb|eRemote0bject.nerrow
objref, Trensferhome.c|ess);
} cetch (Nem|ngExcept|on) { throw new 6reeteExcept|on() }
}
pub||c vo|d ejbPost6reete ()
{ }
}
Gestion de la scurit
Stratgies de Conception
I Amlioration des performances avec un session bean
Entity-Bean : grain fin / Session Bean : gros grain
rduction du trafic rseau et de la latence
Limites : La rentrance
ILa rentrance
Exemple
pub||c c|ess A_een |mp|ements Ent|tyeen { || A est | '|nterfece d|stente
pr|vete trens|ent Ent|ty6ontext ctx;
pub||c vo|d method_1() {
b= . || rcupere une rfrence d|stente
A myse|f=(A)ctx.getEJ0bject();
b.method_2(myse|f); }};
pub||c c|ess _een |mp|ements Ent|tyeen { || est | '|nterfece d|stente
pr|vete trens|ent Ent|ty6ontext ctx;
pub||c vo|d method_2(A e) { e.method_3();|* |oopbeck *| }};
Limites : La rentrance
interdit pour les session bean
autoris mais dconseill pour les entity bean
I Problme
pas de diffrence
entre multithreading multiclient et rentrance
Relations entre composants CORBA 3.0
et les EJB
I Un EJB peut tre plac dans un conteneur de composants
CORBA
I Un composant CORBA crit en Java et utilisant seulement
les APIs EJB peut tre mis dans un conteneur EJB
I Correspondance entre les APIs EJB et les APIs CORBA
Components
EJB vs MTS
IVoir Gopalan
http://members.tripod.com/gsraj/misc/ejbmts/
Outils de Dveloppement
I Bases de Donnes
I Moniteurs Transactionnels
I Serveurs Applicatifs
I Outils de programmation
Outils de Dveloppement
I WebLogic
I IBM
I Oracle
I GemStone
I BEA
I Borland
I Netscape
I Lotus
I SilverStream
I Forte
I Progress
I Novell
I Novera
I Borland
I Informix
I IONA
I Allaire
I EJBHome, JOnAS, ...
J2SE
JMS, JNDI, JTA,
JDBC, RMI(IIOP)
Java Mail, JAF
EJB Container
EJB
J2SE
JMS, JNDI, JTA,
JDBC, RMI(IIOP)
Java Mail, JAF
Web Container
JSP
Database
Applet Container
J2SE
JMS, JNDI,
RMI(IIOP), JDBC
J2SE
Application Client
Container
Application
client
Applet
Servlet
J2EE
Java 2 Enterprise Edition
Spcifie la plateforme complet Java pour des applications
multi-tiers (vs J2SE,J2ME)
IArchitecture
J2EE
Java 2 Enterprise Edition
IDeux types de composants J2EE
Web Component (fichier JAR .war)
Servlet, JSP, HTML (formulaire associ une servlet)
EB Component (fichier JAR .ear)
Entity Bean, Session Bean
IPlateforme de rfrence
SUN j2sdkee
Java ONE (Open Net Environment)
I Annonc le 5/2/2001
I Ajout des standards Web Services dans J2EE
SOAP, WSDL, UDDI, ebXML,
I Nouvelles API
Context API
Interface vers les donnes contextuelles dun service Web
JAX/RPC (Java API for XML based RPC)
Interface aux protocoles de transport de message XML de type RPC (SOAP, W3C
XP, )
JAXB (Java API for XML Data Binding)
Correspondance automatique entre des objets Java et des donnes XML
JAXM (Java API for XML Messaging)
Interface aux protocoles de transport de messages XML : SOAP, ebXML Message
Service,
JAXP (Java API for XML Processing)
Gestion des arborescence DOM
JAXR (Java API for XML Registries)
Interface aux annuaires ebXML Registry/Repository et UDDI Business Registry
Les spcifications EJB
IEJB 1.0
IEJB 1.1
JDBC 2.0, Descripteurs XML
contexte standard JNDI
IEJB 2.0
Connector
Message Driven Bean (JMS), ...
ILa suite
Hritage ?
Rentrance ?
Modles de transaction avances ?
EJB 2.0 What new
I Abstract Persistente State
I What is persistent state ?
I Notion of dependent classes
I Can be pluggable
I Relationship
EJB1.1 coded by the developper
in 2.0 ??
I New methods : Select
can b
ejBSelect<type>
ejbSelect<type>inEntity
I New ejbHome methods
Persistence
I Abstract Persistente State
I What is persistent state ?
I Notion of dependent classes
I Can be pluggable
I Relationship
EJB1.1 coded by the developper
in 2.0 ??
I New methods : Select
can b
ejBSelect<type>
ejbSelect<type>inEntity
I New ejbHome methods
EJB QL (Query Language)
ISQL like
used to specified finder and select
IForm of Query
[Select_clause] From_clause [Where_Clause]
Navigation
IQuery
static in DD
has parameters that corresponds to finder/select methods
parameters
can use finder methods of other entity beans
EJB QL (Query Language)
Example
INo SELECT and navigation
FR0H 0rdereen o, | |N o.||ne|tems
whERE |.product.product_type = ?
ISELECT and @@ operator
8ELE6T ggo1
FR0H 0rdereen o1, 0rdereen o2
whERE o1.quent|ty > o2.quent|ty AN0
o2.customer.|estneme = '8m|th' AN0
o2.customer.f|rstneme= 'John'
ISELECT and @@ operator
8ELE6T |=>product FR0H 0rdereen A8 o, | |N o.||ne|tems
8ELE6T |.product FR0H 0rdereen A8 o, | |N o.||ne|tems -- |||ege|
JMS Integration
publisher
bean can send message
subscriber - Message Driven Bean
new EJB bean type
similar to Stateless Session Bean
transaction attribute of onMessage()
Only : NotSupported, Required
The use of the other transaction attributes is not meanigful for
message-driven beans because there can be no pre-existing
transaction context (RequiresNew, Supports) and no client to
handle exceptions (Mandatory, Never).
Transaction
Receive/Send Messages can be in a transaction scope
MessageDrivenBean
I Subscriber of an JMS Queue or Topic
I package javax.ejb;
import javax.jms.Message;
import javax.jms.MessageListener;
public interface MessageDrivenBean extends MessageListener{
public void onMessage(Message message);
public void ejbCreate();
public void ejbRemove();
public void setMessageDrivenContext(MessageDrivenContext mdc);
}
MessageDrivenBean
Exemple
pub||c c|ess Herket|ngeen |mp|ements jevex.ejb.Hessege0r|veneen {
pub||c vo|d onHessege(Hessege messege) {
0bjectHessege orderHessege = (0bjectHessege)orderHessege:
0rder0ete|| order0ete|| = (0rder0ete||)orderHessege.get0bject();
|nteger customer|0 = order0ete||.get6ustomer|0();
|n|t|e|6ontext jnd|Enc = new |n|t|e|6ontext();
6ete|oghome cete|oghome =
(6ete|oghome)jnd|Enc.|ookup("jeve:comp|env|ejb|cete|og");
|teretor product|0s = order0ete||.getProducts|0s();
wh||e(product|0s.hesNext()){
|nteger product|0 = (|nteger)product|0s.next();
6ete|og cet = 6ete|oghome.f|ndyProduct|0(product|0);
cet.edd6ustomerToHe|||ngL|st(customer|0);
}
}
}
Timer Service
IBusiness Work-Flows or Process-Flows
rely on timed notifications.
IEJB Timer service
Notify beans (except SF SB) but must implement
javax.ejb.TimedObject
Schedule
at a specific time ( at 10:30 AM on May 23 ),
after a duration of time ( in 30 days )
or at timed intervals ( every 12 hours ).
Call the ejbTimeout method of the bean's implementation
class defined by the javax.ejb.TimedObject interface
I4 interfaces in the javax.ejb
TimedObject, Timer, TimerHandle, TimerService
EMB (Enterprise Media Beans) JSR0086
IMotivations
Intgration des donnes multimedia (orient Streaming) dans
les applications J2EE (EJB-JSP/JSF/Servlet)
I2 types de composants EMB
Architecture dapplications
utilisant des EMB
EJ 8erver web 8erver
+70/60,/
+773
Enterpr|se
Hed|e eens
Enterpr|se
Hed|e eens
50,66/
,,2366/
8erv|et,
F||ter,
J8P, J8F
8erv|et,
F||ter,
J8P, J8F
Enterpr|se
eens
Enterpr|se
eens
R0H8|ERP
0ete8ource
-'%&
-&$
web cam site
blah blah
blah blah
blah blah
blah blah
blah blah
03(*
5763
[+70/60,/
+773
03(*
5763
8treem|ng
8erver
Hed|e
P|ug|n
Hed|e
P|ug|n
Hetedete
Repos|tory
8treem
Repos|tory
JMF
RealOne
WMP,
J2ME
Mobile Media
API (JSR135)
Composants EMB
I Media Foundation Beans
Transient, local, immutable
Services
Extraction des metadatas (dure dune chanson, )
Conversion de formats, ajout dinformation (watermark, )
Analyse des capacits du terminal (CC/PP)
Architectures plugin
Media Format Plug, Media Converter
I Media Entity Beans
Reprsente des objets multimdia
Persistent (Primary Key) et moaifiable et observable
Les objets multimdia peuvent tre lis les uns aux autres
Inclusion, prdecesseur/sucesseur, content/representant (thumbnail),
Intgration seamless dans une application J2EE
Les streams sont opaques et stocks sur des sources externes
BLOB, UDT, url http://, url rtsp://
Exemple dapplication
utilisant des EB et des EMB
IEmmy Award
EMB - Media Foundation Beans
EMB - Media Entity Beans
Components and interactions
Interoperablity
Distribution
Transaction (optional)
TX propagation rely on OTS TX propagation
Naming
CoCosNaming
Client
Security
CORBA IIOP CSIv2lebvel 1
SSL, TSL
Transaction
Message Driven bean issues
not propogation via JMS
bean can only NOT_SUPPORTED or REQUIRED
onMessage()
Local Optimisation
on commit ?
Connection Factory
Future
Deferred features
Pluggable Persistence Manager
Support for method interceptor
Support for Component based inheritance
Read-Only Beans with CMP (optimisation
Aggregate operations for EJB QL finder method
Related
Java Connector Specification
API
Question about JOS (
Web Services
I * Support for the use of Message-Driven Beans with JAXM
messaging.
Enterprise JavaBeans 2.0 introduced the message-driven bean as a new component
type in the EJB architecture. Use of message-driven beans in EJB 2.0, however, is
limited to the Java Message Service API. With the growing need for Enterprise
JavaBeans to support use with web services, it becomes important to extend the
use
of message-driven beans to support JAXM (the Java APIs for XML Messaging) in
addition to JMS. This will support the asynchronous delivery of XML business
documents by means of the message-driven bean type.
I * Support for Web Services Usages
Enterprise JavaBeans 2.1 will include support for the necessary elements to
enable
enterprise beans usage with web services. This will include, among other items,
expanding the environment support and deployment descriptor infrastructure for
enterprise beans that use JAX-RPC and JAXM to access service endpoints or to
implement web service endpoints.
I http://jcp.org/jsr/detail/153.jsp
Pont avec DCOM et CORBA
IPont avec DCOM
COM Client invoque EJB Server
EJB Client invoque COM Server
Spcification SUN J2EE CAS
IPont avec CORBA
Enterprise 1avaBeans
TM
Components and CORBA
Clients http://java.sun.com/j2se/1.4.1/docs/guide/rmi-
iiop/interop.html
XDocLet
IMotivation
Inclure les informations de dploiement dans les
commentaires des sources du bean
Pour en gnrer les fichiers de dploiement
IOutillage
Bas sur les DocLet (JavaDoc)
Tache ANT
<taskdef
name="ejbdoclet"
classname="xdoclet.modules.ejb.EjbDocletTask"
/>
Exemple XDocLet
/**
* @ejb.bean
* name="CustomerBean"
* type="CMP"
* view-type="both"
* primkey-field="id"
* @ejb.home
* remote-class="xdoclet.CustomerHomeRemote"
* local-class="xdoclet.CustomerHomeLocal"
* @ejb.interface
* remote-class="xdoclet.CustomerRemote"
* local-class="xdoclet.CustomerLocal"
* @ejb:pk
* class="java.lang.Integer"
* @ejb:finder
* signature= "java.util.Collection findAllCustomers()"
* query="SELECT OBJECT(c) FROM CustomerBeanAS c"
* @ejb:transaction
type="Required"
*/
public abstract class CustomerBean implements EntityBean {
}
Bibliographie
I Homepage EJB et J2EE
http://java.sun.com/products/ejb
http://java.sun.com/products/j2ee
I Pour pratiquer
Limplantation de rfrence J2EE
http://java.sun.com/products/j2ee
Le Tutorial de Sun
http://java.sun.com/j2ee/tutorial/
JOnAS un J2EE Open-Source (made in France)
http://www.objectweb.org
OpenEJB un autre J2EE Open-Source (made in France)
http://www.openejb.org
Tutorial de Gopalan
http://www.execpc.com/~gopalan/java/ejb/
Le Training de jGuru
http://developer.java.sun.com/developer/onlineTraining/EJBIntro/EJBIntro.html
Performances et Benchmarks
I ECPerf Version 1.0 (Draft 02/2001)
Pas de charge de travail induite par linterface utilisateur (gnration des pages de
prsentation HTML)
Ni aux performances des serveurs bases de donnes (Entre-Sorties disque, Contrle de
concurrence, gestion des buffers, )
Sinteresse la capacit du container dEJB de grer lusage de de la mmoire, le cache , les
pools de connexions aux SGBDs, lactivation et la passivation des Beans,
I Modle dapplications
bases de donnes et les charges de travail de 4 domaines dactivit dune entreprise:
Fabrication (Manufacturing), Fournisseur (Supplier), Clientle (Customer), et Socit
(Corporate).
I Mesures
BBops/min (Benchmark Business Operations Per Minute)
qui est la somme des transactions de prises de commande du domaine Clientle et des ordres de
fabrication du domaine Fabrication par minute.
$/Bbops
la mesure conomique qui est le ratio performance sur prix du matriel, du logiciel et dune anne de
maintenance.
I http://java.sun.com/j2ee/ecperf/, http://ecperf.theserverside.com/,
Bibliographie
Livres
I Ed Roman, Scatt Ambler, Tyler Jewell, Mastering Entreprise Javabeans, End
edition, 2002, Ed Wiley, ISBN 0-471-41711-4
Trs complet
Existe en version lectronique tlchargeable
I Richard Monson-Haefel, Enterprise JavaBeans , 1st Edition June 1999
(est.), ISBN 1-56592-605-6, Ed O'Reilly
seconde dition, Mars ??? 2000, ISBN ????
Livre consacr aux EJB(spec 1.1). l exemple dvelopp dans le livre est de la Rservation de
Croisires
Andrew Patzer , "Programmation Java ct serveur : Servlets, JSP et EJB", Ed
Eyrolles-Wrox, 2000, ISBN 1-861002-77-7 (sources des exemples sur
www.wroxfrance.com)
chapitres 23
www.theserverside.com
www.middleware-company.com
Bibliographie
Livres
I Robert Orfali, Dan Harkey, Client/Server Programming with Java and Corba ,
2me dition, 1998, Ed Wiley, ISBN 0-471-24578-X.
Livre plutt orient CORBA, le chapitre 34 est consacr aux EJB et l exemple dvelopp dans le
livre(Rservation de Htel/Sejour) est transpos aux EJB
I Andreas Vogel, Madhav Rangarao, Programming Enterprise Javabeans, JTS
and OTS : Building Distributed Transactions With Java and C++ , 1999, Ed
John Wiley & Sons; ISBN 0-471-31972-4
Livre plutt orient OTS/JTS, le dernier chapitre est consacr au EJB et l exemple dvelopp dans
le livre(Rservation de Billet d Avion) pour OTS est transpos aux EJB.
Sources du Cours
ICe cours a t construit partir des prsentations
et des livres de :
Michel Riveill
Philippe Merle
Grard Vandome
Tom Valesky
Richard Monson-Haefel
Monica Pawlan
Gopalan Suresh Raj
Marek Prochazka (University of Charles, Pragues)
Limites
I Limited set of Component Mode
Entity, session, message-driven
I Change usage of service
Eg how to add TX attributes
I Single level component
I EJB app is a set of isolated beans
No implicit access restriction
I EjB do not supported shared instances
Only a beans home can be shared
I Proposal EOA
I POA for EJB
Intercepts methods invocations

Vous aimerez peut-être aussi