Vous êtes sur la page 1sur 26

samia.bouzefrane@cnam.

fr - CEDRIC ( CNAM) -

Les EJBs (Enterprise Java Beans)

Samia Bouzefrane Matre de Confrences Laboratoire CEDRIC Conservatoire National des Arts et Mtiers 292 rue Saint Martin 75141 Paris Cdex 03 samia.bouzefrane@cnam.fr http://cedric.cnam.fr/~bouzefra

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Bibliographie
EJB 2.0 : Mise en uvre, Christophe Calandreau, Alain Faur Nader Soukouti, Ed. Dunod, 2002, ISBN : 2 10 004 729 9. Lenvironnement J2EE : principes, fonctions, utilisation P. Dchamboux, cole dt sur les Intergiciels et sur la Construction dApplications Rparties, ICAR2003, http://sardes.inrialpes.fr/ecole/2003/ Enterprise java Bean Lionel Seinturier, Universit Pierre & Marie Curie, octobre 2003 http://www-src.lip6.fr/homepages/Lionel.Seinturier/middleware/ejb.pdf Programmation Java ct Serveur : Servlets, JSP et EJB, Andrew Patzer, Ed. Eyrolles, 2000, ISBN : 2 212 09109 5. Tutorial J2EE de Sun : http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html
2 Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Architecture des Systmes dInformations


- accs aux donnes - traitement des donnes - prsentation des donnes Architecture en couches
Couche Prsentation (IHM, Applet Java, Page HTML) Couche Mtier (composants qui rglent les problmes mtiers) Couche Donnes enregistre ltat des objets (ex. comptes bancaires) dans une BDD

Cette architecture sert isoler la logique mtier de linterface graphique et interdire un accs direct aux donnes. Avantage : modifier une couche sans toucher aux autres.
3 Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Architecture Client/Serveur ( deux niveaux)

Couches prsentation et mtier Client (IHM + logique Mtier)

Couche Donnes (Serveur de BDDs)

Client lourd

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Architecture 3 niveaux/1
Les 3 couches sont physiquement spares : on peut mme dcomposer une couche en sous-couches (processus) => architecture n niveaux

Couche Prsentation (IHM, Applet Java, Page HTML)

Couche Mtier (composants qui rglent les problmes mtiers)

Couche Donnes (enregistre ltat des objets dans une BDD)

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Architecture 3 niveaux/2
prsentation traitement donne

client

Serveur dapplications: hberge des applications base de composants EJB (classes java conformes au modle EJB) et des composants Web (servlets, JSP)

SGBD : fournit un support de stockage pour les donnes de lapplication

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Middlewares et Architectures distribues


Manipuler des objets => il est indispensable dutiliser une infrastructure technique Pour faire communiquer ces objets : Linfrastructure doit : - fournir des services de nommage - fournir des services de scurit. CORBA,RMI Inconvnients dutiliser des middlewares : - portabilit ct serveur quasi-nulle - le dveloppeur gre le cycle de vie des objets - le dveloppeur doit optimiser laccs et lutilisation des ressources (exemples: connexion aux BDDs et manipulation de threads) Ces tches seront automatises : elles sont plutt dclares au lieu dtre programmes.
7 Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Architecture J2EE (Java 2 Enterprise Edition)

Larchitecture J2EE de Sun a t propose pour palier ces inconvnients. Larchitecture J2EE dfinit : - un middleware bas sur RMI/IIOP - des objets Java distribus : EJB (Enterprise Java Beans) Larchitecture J2EE fournit des services techniques pour permettre au dveloppeur de se concentrer sur la logique mtier.

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Plate-forme J2EE
Container Web
Serveur de Noms (JNDI) Web (moteur de Servlets, JSP)

Container EJB
MOM (JMS) Transaction (JTA, JTS) Scurit (JAAS) Mail (JavaMail) Bases de donnes (JDBC) Administration (JMX) Connecteurs (JCA)

RMI

Client lger

Serveur J2EE
Container Web : environnement dexcution pour les Servlets et JSP. Container EJB : environnement dexcution pour les EJBs

ORB (RMI)

HTTP

Bases de donnes (Oracle, )


Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Fonctions couvertes par J2EE

La communication entre objets distribus avec Java RMI et RMI/IIOP La cration dobjets distribus transactionnels avec EJB La cration et la recherche de rfrences dobjets distants avec JNDI (Java Naming and Directory Interface) Laccs aux Bases de donnes avec JDBC (Java DataDase Connectivity) La gestion des transactions avec JTA (Java Transaction API) et JTS (Java Transaction Service) La communication asynchrone par messages avec JMS (Java Message Service) La ralisation dinterfaces graphiques Web avec les pages JSP (JavaServer Pages) et les Servlets Lintgration des objets CORBA avec JavaIDL lenvoi de courriers lectroniques avec JavaMail La description du comportement des composants Java en XML

10

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Configurations possibles pour une application J2EE


Navigateurs HTML Application cliente Servlets

EJB Services Mail, JDBC, etc.

EJB Services Mail, JDBC, etc.

Client lger : navigateur Web

Client lourd

11

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Les acteurs dune application J2EE


Diffrents niveaux de responsabilit : Le fournisseur des EJBs : des composants mtier rutilisables (par achat ou dveloppement interne) Lassembleur dapplications : lacteur qui construit une application partir dEJBs existants Le dployeur : lacteur qui rcupre lapplication et qui la dploie sur un serveur dapplications Ladministrateur : lacteur qui contrle et supervise le fonctionnement du serveur dapplication Le fournisseur de serveurs : lditeur qui commercialise un serveur dapplication
Les composants EJB

12

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Fournisseurs de serveurs dapplications J2EE


Offre commerciale
IBM / WebSphere (n 1) BEA / WebLogic Sun One Oracle 9i Application Server Et aussi Borland Entreprise Server, Macromedia / Jrun, SAP Web Application Server, Iona / Orbix E2A

Offre open source


JBoss (n 1) JOnAS EJB : OpenEJB, EJBean Voir la liste des serveurs sur : http://java.sun.com/j2ee/licensees.html
Les composants EJB

13

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Plus dinformations
http://java.sun.com/ http://www.theserverside.com/ http://developer.java.sun.com/developer/technicalArticles/J2EE/ http://developer.java.sun.com/developer/onlineTraining/J2EE/ http://www.triveratech.com/ http://jonas.objectweb.org/

14

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Serveur dapplications

Serveur dapplications Application J2EE = - zro, un ou plusieurs composants EJB - zro, un ou plusieurs composants Web - relis par un schma dassemblage

Conteneur EJB

Conteneur Web

15

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Composants Web/1
Web Bean est un ensemble de : - JSP et/ou - Servlets et/ou - pages HTML

Packags dans un fichier archive .war

Ce sont des composants qui : - implantent une logique de prsentation simple pour des clients Web - servent de passerelle daccs pour des composants EJB - peuvent implanter une logique de petits traitements

16

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Composants Web/2
Exemple : Fichier.html <html> <head> <title> Exemple </title> </head> <body> <form method="POST" action="/servlet/CalcServlet" Addition de deux nombres : <br> <input type=text name=Val1> <br> <input type=text name=Val2> <br> <input type=submit value="Additionner" > </body> </html>
17

>

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Fonctionnalits dun container EJB/1


la connectivit entre les clients et les EJB : le connecteur gre les communications entre les clients et les EJB. Aprs le dploiement dun EJB dans un serveur dapplications, le client peut invoquer les mthodes de cet EJB comme si elles taient situes dans la mme machine virtuelle, les communications sont gres par le middleware sous-jacent. la gestion de la persistance : les composants peuvent choisir de dlguer leur persistance au conteneur. la gestion des transactions : les composants transactionnels peuvent dlguer la gestion de leurs transactions au conteneur.

18

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Fonctionnalits dun container EJB/2


la gestion de la scurit : le conteneur assure lapplication des politiques de scurit dclares mais non codes par le dveloppeur. la gestion de la concurrence : les composants peuvent tre invoqus par un seul client ou bien par plusieurs clients simultanment. la gestion du cycle de vie des composants : le conteneur assure la cration et la destruction des instances des composants. la cration de rserves de connexions : lobtention dune connexion sur une base de donnes est coteuse en termes de ressources, le nombre de connexions tant limit par le nombre de licences, le conteneur peut grer une rserve de connexions.
19 Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Fonctionnalits dun container EJB/3


Serveur dapplications
Concurrence Transaction

6 services fournis par le serveur dapplications au conteneur EJB : - transaction - persistance - scurit - cycle de vie - concurrence - connectivit

Persistance Scurit Cycle de vie Connectivit

Ces services sont intgrs ds le dpart la plate-forme.

Conteneur EJB

20

Les composants EJB

10

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Composants EJB
Composants applicatifs de J2EE (code mtier) Potentiellement rpartis et transactionnels se focalisent sur la logique applicative sont portables dun serveur dapplication un autre Trois profils Session : instances ddies un contexte dinteraction dun client particulier Entit : instances partages reprsentant les donnes de lentreprise Orient message : instances neutres ragissant larrive de messages asynchrones Grs par le container EJB

21

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Les EJ Beans/1
EJ Bean

Bean Message Bean Session Bean Entit BMP (persistance gre par le bean) Avec tat (cest le mme client qui ralise toutes les invocations) CMP Sans tat (persistance gre (plusieurs clients par le conteneur) diffrents peuvent tre associs au mme Bean successivement)

22

Les composants EJB

11

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Les EJ Beans/2
Machine 1 Machine 2

EJ Bean
RemoteHome interface Remote interface

Client distant

Chaque EJ Bean fournit deux interfaces daccs distant Remote : les services mtiers (mthodes) fournis par le bean RemoteHome : interface de gestion du composant (cration, recherche, destruction dinstances)

23

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Les EJ Beans/3
Machine 2

EJ Bean
RemoteHome interface Remote interface LocalHome interface Local interface

Client local

+ ventuellement deux interfaces daccs local (meilleure performance pour les clients hbergs dans le mme conteneur). Local : les services mtiers (mthodes) fournis par le bean LocalHome : interface de gestion du composant (cration, recherche, destruction dinstances)
24 Les composants EJB

12

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Les Beans Session/1


1. Session dont la dure de vie est lie celle de son client, cest une prolongation du processus client dans un serveur dapplication Meurt lorsque le client nen a plus besoin (do lide de session) Bean dure de vie plutt courte Un Bean Session est cr par son client, utilis et supprim ensuite par son client Bean Session sans tat (Stateless session bean) 2. Cest un bean lger Ne prserve pas dtat dun appel un autre Deux instances quelconques dun tel bean sont quivalentes Bean sans variable dinstance Exemple: demande de virement entre deux comptes, services de calcul, services de recherche dinformations dans une BDD

Bean Session avec tat (stateful session bean) Cest un bean lourd, effectue des oprations pour le compte du client Gre un tat en mmoire ( objet avec tat) pour maintenir ltat du client Exemple: un panier sur un site de commerce lectronique avec 2 attributs, nom du client et les articles slectionns
Les composants EJB

25

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Les Beans Session/2


Quand utiliser un Bean Session ? Pas de besoin spcifique de partage de donnes entre les clients

1.

Bean Session sans tat (Stateless session bean) Pour des tches gnriques Pour consulter en lecture seule des donnes persistantes Efficaces et faciles implmenter Les donnes sont passes comme paramtres de la mthode

2.

Bean Session avec tat (stateful session bean) Ltat du Bean reprsente ltat de linteraction entre le client et le Bean Le Bean doit conserver de linformation entre deux invocations du client Ddi un client pendant toute sa dure de vie Le mme Bean est utilis pour servir tous les appels du mme client
Les composants EJB

26

13

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Les Interfaces mtier Beans Session


Dfinissent les interfaces que le Bean peut rendre au client. Elles sont locales ou distantes. 1. Interface mtier distante (Remote ) Accessible par des composants locaux ou distants au Bean Hrite de linterface javax.ejb.EJBObject Les mthodes de linterface lvent lexception RemoteException

2.

Interface mtier locale (Local ) Accessible uniquement par les composants situs sur la mme machine que le Bean Hrite de linterface javax.ejb.EJBLocalObject Pas dexception RemoteException

27

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Interface Remote dun Bean Session

Exemple.

import javax.ejb.EJBObject; import java.rmi.RemoteException;

public interface Calc extends javax.ejb.EJBObject { public double add (double val1, double val2) throws RemoteException; }

28

Les composants EJB

14

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Interface Local dun Bean Session

Exemple.

import javax.ejb.EJBLocalObject;

public interface CalcLocal extends javax.ejb.EJBLocalObject { public double add(double val1, double val2) ; }

29

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Les Interfaces de gestion du cycle de vie


Locales ou distantes, grent la cration, la recherche et la suppression des EJ Beans. 1. Interface Home distante (RemoteHome ) Gre le cycle de vie du Bean Hrite de linterface javax.ejb.EJBHome Les mthodes de linterface lvent les exceptions RemoteException et CreateException

2.

Interface Home locale (LocalHome) Gre le cycle de vie du Bean Hrite de linterface javax.ejb.EJBLocalHome Pas dexception RemoteException

3.

Mthodes possibles : create (cration dinstances de bean, retourne linterface Remote ou Local selon que linterface est locale ou distante) Plusieurs mthodes create peuvent tre dfinies avec plusieurs signatures

30

Les composants EJB

15

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Interface Home dun Bean Session


Exemple.

import javax.ejb.EJBHome; import javax.ejb.CreateException; import ja.rmi.RemoteException;

public interface CalcHome extends javax.ejb.EJBHome { public Calc create() throws CreateException, RemoteException; }

31

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Interface HomeLocal dun Bean Session


Exemple.

import javax.ejb.EJBLocalHome; import javax.ejb.CreateException;

public interface CalcLocalHome extends javax.ejb.EJBLocalHome { public CalcLocal create() throws CreateException ; }

32

Les composants EJB

16

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Implmentation du Bean Session


Classe Java : - qui dfinit les mthodes spcifies dans les interfaces Remote et RemoteHome - qui implmente linterface javax.ejb.SessionBean - la classe dimplmentation de javax.ejb.SessionBean ne dclare pas limplmentation des interfaces Method Summary (Mthodes de linterface SessionBean) void ejbActivate() The activate method is called when the instance is activated from its passive state. The passivate method is called before the instance enters the passive state. A container invokes this method before it ends the life of the session object. Sets the associated session context

void ejPassivate() void ejbRemove() void setSessionContext()

33

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Dveloppement

Fournir des mthodes pour les interfaces Remote et RemoteHome - mme mthodes que dans linterface Remote - une mthode ejbCreate pour chaque create de linterface RemoteHome - mme profil que create - retourne void

34

Les composants EJB

17

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Exemple de classe dimplmentation/1

import javax.ejb.SessionBean; import javax.ejb.SessionContext; import javax.ejb.CreateException; public class CalcBean implements SessionBean { SessionContext sessionContext;

//constructeur public CalcBean() {}

// mthodes de linterface Home public void ejbCreate() throws CreateException { };

35

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Exemple de classe dimplmentation/2

// mthodes de linterface SessionBean public void ejbRemove() { } //public void ejbActivate() { } non utilisee par un Bean sans etat //public void ejbPassivate() { } non utilisee par un Bean sans etat public void setSessionContext (SessionContext sessionContext sessionContext) {this.sessionContext = sessionContext;}

// mthode de linterface Remote public double add(double val1, double val2) { return val1+val2; }

} // fin de CalcBean
Les composants EJB

36

18

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Structure dun Bean Session


*Pour les Beans Session sans tat, linvocation de create() sur une interface Home ne dclenche pas ncessairement la mthode ejbCreate() sur le bean

Conteneur EJB

Interface SessionBean Bean

Interface SessionContext

ejbCreate()* objet Home distant Mthodes mtier objet EJB distant

Mthodes mtier ejbCreate()* objet Home local Objet EJB local

Client Interface mtier distante Interface mtier locale

Client
37 Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Client EJB
Dveloppement ct client : 1. Rechercher linterface Home du Bean par son nom via JNDI JNDI : API accs services nommage (LDAP, CORBA COSNaming, DNS, RMI registry, etc.) 2. Accder au Bean Linterface Home permet daccder aux instances existantes du Bean ou den crer de nouvelles => on rcupre une rfrence sur une interface Remote 3. Invocation du Bean

38

Les composants EJB

19

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Classe Java du Client EJB


import javax.rmi.*; import javax.naming.*; import javax.ejb.*; public class ClientCalc { CalcHome calcHome; // reference sur l'objet Home distant Calc myCalc; //ref sur l'objet EJB distant try {// obtention du contexte initial : ref du service de nommage Context ctx = new InitialContext(); //recherche de l'interface Home distante Object ref= ctx.lookup("Calc"); calcHome = (CalcHome)PortableRemoteObject.narrow(ref,CalcHome.class); // ref: souche dacces a linterface Home de Calc // creation d'un EJB Calc myCalc = calcHome.create (); double somme = 0; //invocation de la methode metier add() somme = myCalc.add(Integer.parseInt(args[0]),Integer.parseInt(args[1])); System.out.println(somme);
39 }

catch(Exception e) {e.printStackTrace(); }

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Couche Prsentation/1
Exemple : Fichier.html <html> <head> <title> Exemple </title> </head> <body> <form method="POST" action="/servlet/CalcServlet" Addition de deux nombres : <br> <input type=text name=Val1> <br> <input type=text name=Val2> <br> <input type=submit value="Additionner" > </body> </html>
40

>

Les composants EJB

20

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Couche Prsentation/2

CalcServlet.java
public class CalcServlet extends HttpServlet { private static final String CONTENT_TYPE="text/html"; private calcHome CalcHome;

// a linitialisation de la servlet, on recupere la reference de linterface Home de Calc


public void init() throws ServletException { try { Context ctx=new InitialContext(); Object ref=ctx.lookup("Calc"); calcHome = (CalcHome)PortableRemoteObject.narrow (ref, CalcHome.class); } catch (Exception e) {e.printStackTrace();} } // fin de init()

41

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Couche Prsentation/3
CalcServlet.java (suite)
public void doPost(HttpServletRequest requete, HttpServletResponse reponse) throws ServletException, IOException { reponse.setContentType(CONTENT_TYPE); PrintWriter sortie=reponse.getWriter(); Double d1=new Double(requete.getParameter("Val1")); Double d2=new Double(requete.getParameter("Val2")); double val1= d1.doubleValue(); double val2=d2.doubleValue(); // creation d'un EJB Calc myCalc = calcHome.create(); //invocation des methodes metier add() double res=myCalc.add(val1, val2); sortie.println("<html><head> <title> Resultat </title> </head> <body>");
42 Les composants EJB

21

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Couche Prsentation/4
CalcServlet.java (suite)
sortie.println("<p> Rsultat de lOpration " + val1 + "+" + val2 +"="+ "<b>"+res +"</b>"+ "<p>"); sortie.println("</body></html>"); } // fin de doPost } // fin de la servlet

43

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Intraction entre le client et le Bean


Serveur de noms b. bind() Conteneur EJB

1.lookup() 3.create() Stub Calc Home 2.create() 5.add() Stub Calc EJB 6.add() Calc EJB 7.add() CalcBean 8.retour du rsultat 4.retour rfrence Calc EJB CalcHome a. cration

9.retour du rsultat

Client
44 Les composants EJB

22

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Cycle de vie dun Bean Session sans tat


Nexiste pas A linitiative du client 1.create 2. newInstance 3. setSessionContext 4. ejbCreate 1.remove 2.ejbRemove Terminer un Bean, linitiative -de lutilisateur -du conteneur

Prt

Opration sur Home Opration sur instance Attention, Appel non rentrant

1. methode

45

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Cycle de vie dun Bean Session avec tat


Nexiste pas A linitiative du client A linitiative du conteneur 1.create 2. newInstance 3. setSessionContext 4. ejbCreate ejbPassivate Passif ejbCreate quivalent au mcanisme de SWAP en mmoire virtuelle 1. methode Prt 1.remove 2.ejbRemove Terminer un Bean, linitiative -de lutilisateur -du conteneur

Opration sur Home Opration sur instance Attention, Appel non rentrant

46

Les composants EJB

23

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Spcifications des proprits du Bean


Un Bean est dfini grce ses proprits : -Pour un Bean Session, il faut indiquer sil est avec ou sans tat. -Pour un Bean Entit, il faut indiquer si la persistance est gre par le conteneur ou par le programmeur. -Pour les deux types de Beans, il faut indiquer si la gestion des transactions sera gre par le conteneur ou par le programmeur. Les proprits du Bean sont fournies dans un fichier XML appel descripteur de dploiement <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "<http://java.sun.com/dtd/ejb-jar_2_0.dtd>"> <ejb-jar> <enterprise-beans> <session> <display-name>Calc</display-name> <ejb-name>Calc</ejb-name> <home>rep.CalcHome</home> <remote>rep.Calc</remote> <ejb-class>rep.CalcBean </ejb-class> <session-type>Stateless </session-type> <transaction-type>Container</transaction-type> </session>
47 Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Spcifications des proprits du Bean

</enterprise-beans> <assembly-descriptor> <container-transaction> <method> <ejb-name>Calc</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar>

48

Les composants EJB

24

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Dploiement du Bean/1
Une fois que le Bean est dfini, il faut le dployer dans un serveur dapplication. Il faut alors assembler tous les lments du Bean dans un fichier JAR qui va contenir : - Les interfaces du Bean - La classe du Bean et les classes auxiliaires - Le descripteur de dploiement. Les serveurs dapplication offrent des interfaces graphiques, appeles consoles dadministration qui permettent de rditer le descripteur de dploiement. Une fois lobjet dploy, ce dernier enregistre la rfrence lobjet EJBHome dans un serveur de noms accessibles via JNDI. Calc.jar = { Calc.class, CalcLocal.class, CalcHome.class,CalcHomeLocal.class, CalcBean.class, ejb-jar.xml }

A partir du fichier JAR, le serveur est capable dextraire son contenu et de rendre le Bean utilisable par les clients, cd, gnrer des composants ncessaires la communication (Stub et Skeleton) entre le Bean et ses clients (on parle de code dploy), on peut trouver : -lobjet EJB qui implmente linterface mtier -Lobjet EJBHome qui implmente linterface Home.

49

Les composants EJB

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Dploiement du Bean/2
Packaging des applications Une application EJB = 1 archive .ear = { 1 descripteur XML de lapplication, 1 archive .war par composant Web, 1 archive .jar par composant EJB } Une archive .war = { 1 descripteur XML du composant Web, JSP ou servlet.class }

Une archive .jar = { 1 descripteur XML du Bean, les fichiers .class du Bean }

50

Les composants EJB

25

samia.bouzefrane@cnam.fr - CEDRIC ( CNAM) -

Restrictions des EJBs et Gestion des ressources


Restrictions des EJBs -les EJBs ne doivent pas manipuler des threads -les EJBs ne doivent pas effectuer des oprations dentre/sortie -les EJBs ne doivent pas manipuler les sockets serveur -les EJBs ne doivent pas charger des librairies crites en code natif (C, C++) Gestion des ressources Les serveurs EJB grent une charge importante tout en gardant un bon niveau de performance. Les EJBs mettent en uvre deux techniques pour grer un grand nombre de Beans (donc de clients):les pools dinstance et le partage de ressources entre les Beans Un pool dinstances des EJBs est une rserve dinstances cres lavance: technique utilise par les Beans Session sans tat, les Beans Message et Entit.

51

Les composants EJB

26