Académique Documents
Professionnel Documents
Culture Documents
J2EE
J2EE
Applets
http
rmi
rmi
rmi
html
public
static void
main() {
Architecture multi-tiers
Client
Lger (Web, browser)
Lourd (Application java, Applet)
Architecture oriente service (Application
rpartie sans prsentation)
Serveur d applications
Conteneur EJB + logique mtier
Services non fonctionnels
EIS ou Base de donnes
Un serveur J2EE
EJB Container
JOnAS J2EE JOnAS J2EE Server Server
Services
...
M
a
n
a
g
e
m
e
n
t
E
a
r
N
a
m
i
n
g
Enterprise
Java Bean
Enterprise
Java Bean
Home
interface
Remote
interface
Enterprise
Java Bean
database JDBC Calls
D
a
t
a
b
a
s
e
E
J
B
RMI Calls
Java Client
T
r
a
n
s
a
c
t
i
o
n
HTML Client
Web Container
W
e
b
Servlets
HTTP
Source : Bull/ObjectWeb (JOnAS)
Conteneur Web
Servlets
Code java excut sur le serveur
Equivalent du CGI
Gnration de contenu Web dynamique
JSP: Java Server Pages
Mlange de HTML/XML et de code java
Librairies d extension ( taglibs )
Prcompilation en servlet
RMI
Remote Method Invocation
Java seulement, mais passerelles
RPC objet (appels sur objets distants)
Service de nommage (RMI registry)
Scurit paramtrable (SecurityManager)
Garbage Collection distribue
Tlchargement de code
Fonctions avances
Activation d objets persistents, Rplication
JNDI
Service de nommage / annuaire
Java Naming and Directory Interface
API accs aux annuaires
javax.naming
Service Provider par annuaire cible (LDAP,
NIS, RMI registry)
Utilisation avec les EJB
Accs l interface home pour initialiser
Accs diverses ressources (UserTransaction,
Queues JMS, DataSources)
JMS
Java Messaging Service
JMS Provider : inclus dans J2EE
Transport synchrone ou asynchrone, Garantie
de livraison
Messaging domains point point ou
publish/subscribe
Lien avec EJB : message-driven bean
Pour changes asynchrones
API J2EE de transactions : JTA
Java Transaction API
Package javax.transaction
TransactionManager : begin(), commit(),
rollback()
Transaction : commit(), rollback(),
enlistResource(XAResource),
registerSynchronisation(Synchronization) ...
Synchronization : beforeCompletion(),
afterCompletion(commit | rollback)
JTA : Participants
XAResource
Conformes la spcification XA
Enregistment avec transaction.enlistResource()
Synchronization
Pour les ressources non transactionnelles (EAI)
Participant averti des frontires de transaction
enregistrement : transaction.registerSynchronization()
beforeCompletion() quivaut prepare()
afterCompletion(tat = commit | rollback) quivaut
commit | rollback
API XA de J2EE
Package javax.transaction.xa
XAResource (prepare(), commit(), rollback()...
Xid (identifiant de transaction XA)
Package javax.sql
Extension de JDBC (bases de donnes)
XADataSource (getXAConnection())
XAConnection (PooledConnection, avec
getConnection() et getXAResource())
JMX
Java Management eXtensions
API unique pour applications de management
Mbeans avec accesseurs get/set
Typage faible, attributs nomms
Serveur JMX
Enregistrement des Mbeans
Les applis d administration dialoguent avec le
serveur JMX
Instrumenter un composant
Fournir un ou des Mbeans
Les enregistrer auprs du serveur JMX
JMX : Exemple d un serveur J2EE
J2EE Server J2EE Server
Services
T
r
a
n
s
a
c
t
i
o
n
S
e
c
u
r
i
t
y
M
a
n
a
g
e
m
e
n
t
E
J
B
W
e
b
R
e
g
i
s
t
r
y
E
A
R
EJB Container
Admin
Servlets
WEB Container
EJBs
J
M
X
S
e
r
v
e
r
Admin console
..
MBeans
MC4J
Source : ObjectWeb JOnAS
EJB: Architecture
JavaBeans pour l Enterprise
Pas des JavaBeans (pas de reprsentation graphique)
Logique mtier
Sappuie sur J2SE et les APIs de J2EE
JNDI, JTA/JTS, JDBC, JMS , JAAS
Gestion dclarative (personnalisation sans toucher au
code source)
Portable sur les diffrents conteneurs EJB
EJB: Gamme de services implicites
Gestion du cycle de vie
Gestion de ltat
Scurit
Transactions
Persistance
Localisation des composants transparente
(comparable objets distribus CORBA)
Rpartition de charge, pooling
=> Le dveloppeur se focalise sur les aspects mtier
EJB
Conteneur EJB
Logique mtier +
Callbacks +
ic=new InitialContext();
ds = (DataSource) ic.lookup(
java:comp/env/jdbc/MyDS);
<resource-ref>
<..name>jdbc/MyDS
<trans-attribute>Required
DD
Composant
Home
Client
Interface Mtier:
Remote(rmi) ou
local
Lifecycle interface
- create
- remove
- find
Remote(rmi) ou
Local
Implement par
le conteneur
Implementation du composant:
-logique mtier (code)
-callbacks pour le conteneur
(ejbCreate, ejbPassivate,
ejbLoad, )
Descripteur de dploiement:
-comportement transactionnel (Tx
attributes)
-Scurit (ACLs)
-Persistance (entity beans)
-Ressources (DataSources )
EJB: Interface composant
Remote (RMI) ou Local
Vue client de l EJB
Declare les mthodes mtier
Implemente par les outils intgrs la plateforme
EJB - au moment du dploiement
Exemple: Remote Interface
Fournisseur
// mthodes mtier
+ getNom():Nom
+ setNom(nom:Nom):void
+ getAdresse():Adresse
+ setAdresse( adresse:Adresse):void
javax.ejb.EJBObject
Hrite de
Interface
EJB: Home Interface
Interface composant accessible distance (RMI)
Reprsente le cycle de vie du composant (cration,
suppression, recherche)
Implemente par les outils intgrs la plateforme
EJB
Spare de la Remote Interface car elle reprsente
des comportements non spcifiques une instance
de bean
Exemple: Home Interface
FournisseurHome
// mthodes de gestion de cycle de vie
+ create(id:Integer):Fournisseur
+ findByPrimaryKey( id:Integer):Fournisseur
javax.ejb.EJBHome
Hrite de
Interface
EJB: Implmentation du Bean
Hrite de EntityBean ou SessionBean mais
nimplmente pas les interfaces Home ou Remote
Pourtant:
Implmente les mthodes mtier de linterface
Remote
Dfinit et dclare les methodes correspondant
linterface Home.
Exemple : Implm. de Bean
FournisseurBean
id:int
nom:Nom
adresse:Adresse
// mthodes de gestion de cycle de vie
+ ejbCreate( id:Integer):void
+ ejbFindByPrimaryKey( id:Integer):void
// mthodes mtier
+ getNom():Nom
+ setNom( nom:Nom):void
+ getAdresse():Adresse
+ setAdresse( adresse:Adresse):void
javax.ejb.EntityBean
Implmente
Interface
Class
EJB: Code client
Object ref ;
FournisseurHome home; // Home interface
Fournisseur fourn; // Remote interface, pas le bean
// appel JNDI pour obtenir une rfrence linterface Home
ref = jndiContext.lookup(
"java:compenvejbFournisseur"!;
home = "ortable#emoteObject.narro$(ref%
FournisseurHome.class!;
// crer un Bean
fourn = &ome.create(idFournisseur!;
// appel mthode mtier
fourn.set'om(un'om!;
EJB: Bean Entit
Reprsente des donnes dans la base de
donnes
Container-Managed Persistence (CMP) or
Bean-Managed Persistence (BMP)
En mode CMP, le conteneur EJB gre la persistance
du bean (pas daccs BD dans le code).
En mode BMP, cest le dveloppeur du Bean qui
gre la persistance (par exemple, en JDBC).
EJB: Bean Session
Gestion des interactions entre beans entit ou
session, accs aux ressources, ralisation dactions
sur demande du client
Objets mtier non persistants
Stateful ou Stateless - maintient ou pas un tat
interne en mmoire
=> Un Bean Stateful encapsule la logique mtier et
ltat specifiques un client
EJB : Message Driven Bean
Composant asynchrone
Execution sur rception d un message JMS
Mthode onMessage()
Appels d autres beans, etc
Descripteur de dploiement
Associations Bean / ressource JMS
Ressources JMS (ex. Queue ou Topic)
Message Driven Bean : exemple
Administration
JMS
BD
MDB StockHandler
MDB Order
Entity Bean Stock
TX
Serveur EJB
Appli :
Client
JMS
publier
Envoi
message
Mise
jour
JNDI
Topic Queue
crer
bind
QCF
crer
Message Driven Bean : exemple (2)
public class StockHandlerBean implements MessageDrivenBean, MessageListener {
utx.commit();
Descripteur de dploiement :
Gestion dclarative des Transactions
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>Fournisseur</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
...
</assembly-descriptor>
NotSupported
Required
RequiresNew
Mandatory
Supports
Never
Gestion dclarative des transactions
Au niveau de la mthode du bean ! (dmarcation)
NotSupported
Si transaction courante, elle est suspendue
Required
Si pas de transaction, nouvelle transaction
RequiresNew
Nouvelle transaction (si tx courante, suspendue)
Mandatory
Exception si pas de transaction courante
Supports
Si transaction courante, l utiliser
Never
Exception si transaction courante
Gestion des vnements
transactionnels (Session Bean)
Interception par un EJB des vnements
transactionnels (produits par le conteneur)
Implantation de javax.ejb.SessionSynchronization
Evnements (appels par le conteneur)
afterBegin : appel aprs UserTransaction.begin
beforeCompletion : appel avant
UserTransaction.commit
afterCompletion(true | false) : appel aprs commit
ou rollback
Descripteur de dploiement :
Scurit
<assembly-descriptor>
...
<security-role>
<description>Personnel administratif de gestion</description>
<role-name>administratif</role-name>
</security-role>
<method-permission>
<role-name>administratif</role-name>
<method>
<ejb-name>Fournisseur</ejb-name>
<method-name>*</method-name>
</method>
</method-permission>
</ assembly-descriptor>
Dfinition de rle
Permissions accordes
un rle
JCA
Java Connector Architecture
Intgration avec les SI d entreprise (EIS)
Applications (ERP, Supply Chain)
Middleware (gestionnaire de transactions)
Connecteur compos de :
Contrats systme
API cliente
Resource Adapter
Contrats Systme
Interaction entre le SI et le serveur
d applications
Gestion des connexions et pooling
Gestion des transactions (par le serveur
d application et/ou le SI)
Scurit (accs scuris au SI)
API clientes
Standard : CCI (Common Client Interface)
Avantage : API standard
Inconvnient : trop gnral et peu comprhensible
(pas de sens mtier), implmentation
facultative.
Spcifique : API spcifique au SI, fournie par
le resource adapter
Avantage : API mtier
Inconvnient : spcifique au SI concern, donc
diffrente selon le connecteur...
Resource Adapter
Implmentation de l interfaage avec le SI
Classes d interface
Librairies natives du SI
Descripteur de dploiement
Configuration du connecteur au sein du serveur
d application
Classes d implmentation des interfaces standard
Fonctionnalits supportes ou non (transactions,
scurit)
Dploiement
Packaging en fichier .rar (RA archive)
Dploy par le serveur d application
Format jar avec organisation standard
Contient tous les lments du connecteur
Descripteur de dploiement (ra.xml) dans
META-INF : configuration du connecteur
Rles dfinis par la spec. EJB
Fournisseur de beans
Dveloppeur qui cre les EJB
Assembleur d application
Cre l application par assemblage d EJB
Administrateur
Dploiement, scurit, explotation, monte en
charge
Analogue au rle de DBA pour les BD
Packaging
Application J2EE (aggrgarion de diffrents tiers)
Fichier .ear + descripteur application.xml
Tiers client
Web : fichier .war + descripteur web.xml
Application : fichier .jar + descripteur
application-client.xml (lancement du main() de la
classe spcifie dans le manifest , attribut Main-
Class )
Tiers EJB
Fichier .jar + descripteur ejb-jar.xml
Tiers EIS (connecteurs JCA)
Fichier .rar + descripteur rar.xml
Persistance + Transactions : exemple
EB1
D
B
M
R
E
G
J
M
X
E
J
B
EB2
D
B
M
E
J
B
J
M
X
J
T
M
SrVlt
J
M
X
W
e
b
Conteneur
EJB
Conteneur
EJB
Conteneur
WEB
DD
2-phase
commit
R1
R2
DB1
DB2
admin
Appli client
Admin client
http
server3
server2
server1
no cust
Rpartition de charge : notations
web
ejb web
web
ejb
Apache
mod_jk
ejb Un conteneur Web Un conteneur EJB
Un serveur qui hberge
un conteneur Web
Un serveur qui hberge
un conteneur EJB
Un serveur Apache avec le module mod_jk
Un noeud (machine) qui hberge un ou plusieurs serveurs
Un serveur qui hberge un conteneur Web et un conteneur EJB
Rpartition de charge : scenarii (1)
ejb web
web ejb
Compact
Rparti
(au sein d un mme nud)
web
ejb
Rparti
Rpartition du serveur J2EE
Rpartition de charge : scenarii (2)
Apache
mod_jk
ejb web
ejb web
(1)
Apache mod_jk
Apache mod_jk
web
ejb
web
(3)
Apache mod_jk
web ejb
web ejb
(4)
Rpartition de charge EJB
Rplication session http
web ejb
web ejb
(2)
Rpartition de charge et clustering
Apache
Tomcat
DB
Tomcat
Tomcat
J
N
D
I
J
N
D
I
J
N
D
I
JOnAS
EJB
Container
JOnAS
EJB
Container
JOnAS
EJB
Container
Mod_jk
Source : ObjectWeb JOnAS