EJB
ENTERPRISE
JAVA BEANS
D FINITION
EJB : Enterprise Java Beans
Les EJB sont des extensions des Java
Beans : une technologie utilis e pour
d velopper des composants Java
r utilisables.
Un composant crit en Java
Une brique applicative sex cutant c t
serveur,
Objectif : construire des applications
distribu es
EJB est une architecture de composants
logiciels c t serveur pour la plateforme de
d veloppement J2EE.
D FINITION (SUITE)
JavaBean = Java (un caf )+Bean (un grain de
caf )
Un ensemble de grains de caf permet la
fabrication de caf . Chaque grain apporte sa
contribution lar me et la saveur du caf
JavaBean = Une classe Java ind pendante qui
d finit des propri t s (donn es) et des
m thodes d crivant ses diff rents services.
Un logiciel est con u par assemblage des
services offerts par les JavaBeans.
Chaque JavaBean apporte sa contribution aux
traitements du logiciel.
PR SENTATION
Le but des EJB est de faciliter la cr ation
dapplications distribu es pour les entreprises.
4
PR SENTATION
Les EJB sont parfaitement adapt s pour
tre int gr s dans une architecture trois
tiers ou plus.
Dans une telle architecture, chaque tier
assure une fonction particuli re :
Le client l ger assure la saisie et
l'affichage des donn es sur le serveur,
les objets m tiers contiennent les
traitements. Les EJB sont sp cialement
con us pour constituer de telles entit s.
Une base de donn es assure la
persistance des informations
SERVEUR DAPPLICATION
/ CONTENEUR DEJB
- Un container EJB est un environnement
dex cution pour un composant EJB.
- Un EJB sex cute sur un container EJB.
-Un container EJB sex cute sur un
serveur dapplication
- R le:
o Encapsule un composant
o Fournit des services de nommage, de
gestion du cycle de vie, persistance,
s curit , transaction
PR SENTATION
Les EJB permettent de :
Repr senter des donn es manipul es par
lapplication (EJB dit Entity),
Proposer des services avec ou sans
conservation d tat entre les appels (EJB dit
Session),
Accomplir des t ches de mani re asynchrone
(EJB dit Message Driven Bean).
7
DIFF RENTS TYPES
DEJB
Il existe trois types dEJB :
EJB Session: r alisation dune t che
pour un client
EJB Entity: mod lisation dune donn e
persistance (Ex: lignes dans une table de
BD)
EJB Message Driven : r ception de
messages suite un v nement
Advertisement
SESSION BEANS
Il existe diff rents types:
- Stateless : sans tat
- Statefull : avec tat
- Singleton: Instance Unique
SESSION BEANS
- Stateless : sans tat
" Une instance est cr e par le serveur pour
plusieurs connexions clientes.
" En cas de demandes simultan es, d'autres
instances sont cr es.
" Ce type de bean ne conserve aucune donn e
dans son tat.
SESSION BEANS
- Statefull : avec tat
" Cr ation dune instance pour chaque connexion
cliente.
" Ce type de bean peut conserver des donn es
entre les changes avec le client.
SESSION BEANS
- Singleton: Instance Unique
" Cr ation dune instance unique quelque soit le
nombre de connexions.
" Autorise les acc s concurrents
CYCLE DE VIE DUN
EJB SESSION
Stateful
create et remove invoqu es par le client
Le conteneur peut d cider de "passiver" le
bean(sauvegarde temporaire du beanen cas
de besoin de m moire)
Stateless
m me diagramme d' tats sauf pas de
passivation
Inexistant
create
remove
Pr t
passivate
activate
Passif
UTILISATION DUN EJB
(1/2)
Chaque EJB fournit 2 interfaces d'acc s
distant:
Remote : les services "m tiers" (m thodes)
fournis par le bean
RemoteHome : interface de gestion du
composant (cr ation, recherche, destruction
d'instances de bean)
Le client doit :
Localiser le Bean par JNDI
Utiliser le Bean via RemoteHome et Remote
UTILISATION DUN EJB
(2/2)
+ ventuellement 2 interfaces d'acc s local (
partir EJB 2.0)
(i.e. pour clients h berg s dans le m me
conteneur meilleure performance)
Local: Services "m tiers" (m thodes)
fournis par le Bean
LocalHome: Gestion du composant
PROCESSUS DE
D VELOPPEMENT
1. D veloppement dun Bean
Ecrire la RemoteHome interface
Ecrire la Remote interface
Ecrire limpl mentation (classe) du
bean
Compiler ces classes et interfaces
2. D ploiement du Bean
Construire le descripteur de
d ploiement
Construire larchive .jar
3. Utilisation du Bean
Ecrire, compiler et ex cuter le client
(Servlet ou application Java ou
Applet)
16
D VELOPPEMENT
DUN EJB SESSION
Advertisement
D veloppement
2 interfaces + 1 classe
Interface Remote
services "m tiers" fournis par le bean
extends javax.ejb.EJBObject
Interface RemoteHome
gestion du bean
extends javax.ejb.EJBHome
Classe Java
code des interfaces Remote et RemoteHome
implements javax.ejb.SessionBean
EXEMPLE: EJB
CALCULATRICE
INTERFACE DUTILISATION
(REMOTE)
32
package p;
import javax.ejb.*;
import java.rmi.*;
public interface CalculatriceRemote extends
EJBObject {
public double add(double v1,double v2) throws
RemoteException;
public double sub(double v1,double v2) throws
RemoteException;
public double mul(double v1,double v2) throws
RemoteException;
public double div(double v1,double v2) throws
RemoteException;
}
}
L'INTERFACE
REMOTE
L'interface remote permet de d finir les
m thodes qui contiendront les traitements
propos s par le bean. Cette interface doit
tendre l'interface javax.ejb.EJBObject.
Toutes les m thodes d finies dans cette
interface doivent obligatoirement respecter les
sp cifications de RMI et d clarer qu'elles
peuvent lever une exception de type
RemoteException.
EXEMPLE: EJB
CALCULATRICE
INTERFACE DE
CR ATION (HOME)
package p;
import javax.ejb.*;
import java.rmi.*;
public interface CalculatriceRemoteHome
extends EJBHome {
public CalculatriceRemote create()
throws RemoteException,
CreateException;
}
L'INTERFACE HOME
L'interface home permet de d finir des
m thodes qui vont g rer le cycle de vie du
bean. Cette interface doit tendre l'interface
EJBHome.
La cr ation d'une instance d'un bean se fait
gr ce une ou plusieurs surcharges de la
m thode create(). Chacune de ces m thodes
renvoie une instance d'un objet du type de
l'interface remote.
La ou les m thodes d finir dans l'interface
home d pendent du type d'EJB :
EXEMPLE: EJB
CALCULATRICE
CLASSE DIMPL MENTATION
package p;
import javax.ejb.*;
public class CalculatriceBean implements
SessionBean {
/ M thodes de l'interface Remote /
public double add(double v1,double v2) {return
v1+v2;}
public double sub(double v1,double v2) {return v1-
v2;}
Advertisement
public double mul(double v1,double v2) {return
v1*v2;}
public double div(double v1,double v2) {return
v1/v2;}
/ M thodes de l'interface RemoteHome /
public void ejbCreate() throws CreateException {}
/ M thodes de l'interface SessionBean /
public void ejbActivate() { }
public void ejbPassivate() { }
public void ejbRemove() { }
public void setSessionContext(SessionContext sc){ }
}
D PLOIEMENT DUN EJB
EXEMPLE
<enterprise-beans>
<session>
<ejb-name>MaCalculatrice</ejb-name>
<home>p.CalculatriceHome</home>
<remote>p.CalculatriceRemote </remote>
<ejb-class>p.CalculatriceBean </ejb-class>
<type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
EXEMPLE: EJB
CALCULATRICE
UTILISATION (CLIENT)
import javax.naming.; import javax.ejb.;
public class Client {
public static void main(String args [ ]) throws Exception {
JNDI: R cup ration dune r f rence
sur le serveur de noms
Context ic = new InitialContext();
Recherche lobjet bean dont le nom a
t attribu par JNDI
Object obj =
ic.lookup("java:global/ProjetEjb/MaCalculatrice");
CalculatriceRemoteHome home =
(CalculatriceRemoteHome)
Construction souche
cliente pour l'acc s
(distant) la Home
PortableRemoteObject.narrow(obj,CalculatriceRemoteHom
e.class);
CalculatriceRemote b = home.create();
double res = b.add(3,6); } }
Interface
Home
Home
Client
Interface M tier:
Composant
EJB 2
Impl mentation du
composant
Descripteur de
d ploiement
<resource-ref>
<..name>jdbc/MyDS
&
<trans-attribute>Required
Logique m tier & +
Callbacks & +
ic=new InitialContext();
o = ic.lookup(
&);
Conteneur
EJB
25
EJB 3
Impl mentation du
composant
Client
Business
Interface
Logique m tier
+ Annotations d ploiement EJB3
+ Callbacks conteneur
Interface M tier:
Advertisement
Conteneur EJB
Simplification : 1 classe, 1 ou 2 interfaces
- Linterface Home (cycle de vie)
dispara t
- Le descripteur de d ploiement devient
facultatif (remplac par des annotations
java dans le bean)
-
26
EXEMPLE: EJB
CALCULATRICE
INTERFACE DUTILISATION
(REMOTE) SIMPLIFI E
32
package monpaquet.EJB;
import javax.ejb.Remote;
@Remote
public interface CalculatriceRemote
{
public double add(double v1,double v2);
public double sub(double v1,double v2) ;
public double mul(double v1,double v2) ;
public double div(double v1,double v2) ;
}
CLASSE EJB SIMPLIFI E
package monpaquet.EJB;
import javax.ejb.*;
@Stateless
public class CalculatriceBean implements
CalculatriceRemote {
/ M thodes de l'interface Remote /
public double add(double v1,double v2) {
return v1+v2;}
public double sub(double v1,double v2) {
return v1-v2;}
public double mul(double v1,double v2) {
return v1*v2;}
public double div(double v1,double v2) {
return v1/v2;}
}
EXEMPLE 1 (UTILISATION)
import javax.naming.; import javax.ejb.;
import monpaquet.EJB.*;
public class Client {
public static void main(String args [ ]) throws Exception {
// Cr ation du contexte
Context ic = new InitialContext();
// Recherche du bean enregistr avec JNDI
Object obj = ic.lookup("
java:global/ProjetEjb/MaCalculatrice ");
// R cup ration du bean r el
CalculatriceRemote b = (CalculatriceRemote) obj;
// Appel m thode du Bean
double res = b.add(3,6);
&
}
}
29
EXEMPLE 2 (AVEC
ANNOTATION)
import monpaquet.EJB.*;
import javax.ejb.*;
public class Client {
public static void main(String args [ ]) throws Exception {
// Injection dun EJB
// Remplace lutilisation implicite de JNDI
@ EJB
CalculatriceRemote b ;
// Appel m thode du Bean
double res = b.add(3,6);
&
}
}
30