Cours Ejb Partie1

26
1 Les composants EJB [email protected] - CEDRIC ( CNAM) - 1 Les EJBs (Enterprise Java Beans) Samia Bouzefrane Maître de Conférences Laboratoire CEDRIC Conservatoire National des Arts et Métiers 292 rue Saint Martin 75141 Paris Cédex 03 [email protected] http://cedric.cnam.fr/~bouzefra Les composants EJB [email protected] - CEDRIC ( CNAM) - 2 Bibliographie EJB 2.0 : Mise en œuvre, Christophe Calandreau, Alain Fauré Nader Soukouti, Ed. Dunod, 2002, ISBN : 2 10 004 729 9. L’environnement J2EE : principes, fonctions, utilisation P. Déchamboux, École d’été sur les Intergiciels et sur la Construction d’Applications Réparties, ICAR’2003, 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 côté 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

Transcript of Cours Ejb Partie1

  • 1Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    1

    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

    [email protected]

    http://cedric.cnam.fr/~bouzefra

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    2

    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

  • 2Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    3

    Architecture des Systmes dInformations

    - accs aux donnes

    - traitement des donnes

    - prsentation des donnes

    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

    Architecture en couches

    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.

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    4

    Architecture Client/Serveur ( deux niveaux)

    Couches prsentation

    et mtier

    Client

    (IHM + logique

    Mtier)

    Couche

    Donnes

    (Serveur de BDDs)

    Client lourd

  • 3Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    5

    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

    [email protected] - CEDRIC ( CNAM) -

    6

    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

    Architecture 3 niveaux/2

  • 4Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    7

    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.

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    8

    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.

  • 5Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    9

    Plate-forme J2EE

    Serveur de Noms

    (JNDI)

    Web (moteur de

    Servlets, JSP)

    ORB

    (RMI)

    MOM

    (JMS)

    Transaction

    (JTA, JT

    S)

    Scurit

    (JAAS)

    Mail

    (Java M

    ail )

    Base s de donnes

    (JDBC)

    Administra tion

    (JMX)

    Connecteur s

    (JCA)

    Bases de donnes

    (Oracle, )

    HTTP

    RMI

    Client lger

    Serveur J2EE

    Container

    Web

    Container

    EJB

    Container Web : environnement dexcution

    pour les Servlets et JSP.

    Container EJB : environnement dexcution

    pour les EJBs

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    10

    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

  • 6Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    11

    Configurations possibles pour une application J2EE

    Navigateurs

    HTML

    Servlets

    Application cliente

    EJB

    Services Mail,

    JDBC, etc.

    EJB

    Services Mail,

    JDBC, etc.

    Client lger : navigateur Web Client lourd

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    12

    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

  • 7Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    13

    Fournisseurs de serveurs dapplications J2EE

    Offre commercialeIBM / 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

    [email protected] - CEDRIC ( CNAM) -

    14

    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/

    Plus dinformations

  • 8Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    15

    Conteneur EJB

    Conteneur Web

    Serveur dapplications

    Application J2EE =

    - zro, un ou plusieurs composants EJB

    - zro, un ou plusieurs composants Web

    - relis par un schma dassemblage

    Serveur dapplications

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    16

    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

  • 9Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    17

    Composants Web/2

    Exemple :

    Fichier.html

    Exemple

    Addition de deux nombres :

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    18

    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.

  • 10

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    19

    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.

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    20

    Serveur dapplications

    Conteneur EJB

    Transaction

    Persistance

    Scurit

    Cycle de vie

    6 services fournis par le serveur dapplications

    au conteneur EJB :

    - transaction

    - persistance

    - scurit

    - cycle de vie

    - concurrence

    - connectivit

    Ces services sont intgrs ds le dpart

    la plate-forme.

    Connectivit

    Concurrence

    Fonctionnalits dun container EJB/3

  • 11

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    21

    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

    Composants EJB

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    22

    EJ Bean

    Bean Session

    Avec tat

    (cest le mme client qui

    ralise toutes les invocations)

    Sans tat

    (plusieurs clients

    diffrents peuvent

    tre associs au mme

    Bean successivement)

    CMP

    (persistance gre

    par le conteneur)

    BMP (persistance gre

    par le bean)

    Bean Message

    Bean Entit

    Les EJ Beans/1

  • 12

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    23

    Les EJ Beans/2

    EJ Bean

    RemoteHome

    interface

    Remote

    interface

    Machine 2Machine 1

    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)

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    24

    Les EJ Beans/3

    EJ Bean

    RemoteHome

    interface

    Remote

    interface

    Machine 2

    + 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)

    Client

    local

    LocalHome

    interface

    Local

    interface

  • 13

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    25

    Les Beans Session/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

    1. Bean Session sans tat (Stateless session bean)

    - 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

    2. 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

    [email protected] - CEDRIC ( CNAM) -

    26

    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

  • 14

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    27

    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

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    28

    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;

    }

  • 15

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    29

    Interface Local dun Bean Session

    Exemple.

    import javax.ejb.EJBLocalObject;

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

    }

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    30

    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

  • 16

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    31

    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;

    }

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    32

    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;

    }

  • 17

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    33

    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

    Sets the associated session contextvoid setSessionContext()

    A container invokes this method before it

    ends the life of the session object.

    void ejbRemove()

    The passivate method is called before the

    instance enters the passive state.

    void ejPassivate()

    The activate method is called when the

    instance is activated from its passive

    state.

    void ejbActivate()

    Method Summary (Mthodes de linterface SessionBean)

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    34

    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

  • 18

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    35

    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 { };

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    36

    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 etatpublic 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

  • 19

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    37

    Structure dun Bean Session

    Bean

    Conteneur EJB

    Interface SessionBean Interface SessionContext

    objet

    Home

    distant objet

    EJB

    distant

    objet

    Home

    local

    Objet

    EJB

    local

    Client

    Client

    Interface mtier distante Interface mtier locale

    ejbCreate()*

    ejbCreate()*

    Mthodes mtier

    Mthodes

    mtier

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

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    38

    Client EJB

    Dveloppement ct client :

    1. Rechercher linterface Home du Bean par son nom via JNDIJNDI : API accs services nommage

    (LDAP, CORBA COSNaming, DNS, RMI registry, etc.)

    2. Accder au BeanLinterface 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

  • 20

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    39

    Classe Java du Client EJBimport javax.rmi.*;import javax.naming.*; import javax.ejb.*;public class ClientCalc {

    CalcHome calcHome; // reference sur l'objet Home distantCalc myCalc; //ref sur l'objet EJB distanttry {// 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);} catch(Exception e) {e.printStackTrace(); } }

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    40

    Couche Prsentation/1

    Exemple :

    Fichier.html

    Exemple

    Addition de deux nombres :

  • 21

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    41

    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()

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    42

    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(" Resultat ");

    Couche Prsentation/3

  • 22

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    43

    CalcServlet.java (suite)

    sortie.println(" Rsultat de lOpration " + val1 + "+" + val2 +"="+ ""+res +""+ ""); sortie.println("");

    } // fin de doPost} // fin de la servlet

    Couche Prsentation/4

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    44

    Intraction entre le client et le Bean

    CalcBean

    Conteneur EJB

    CalcHome

    Calc EJB

    Serveur de noms

    a. cration

    b. bind()

    Client

    Stub Calc

    Home

    Stub Calc

    EJB

    5.add()

    2.create()

    1.lookup()

    3.create()

    4.retour rfrence Calc EJB

    6.add() 7.add()

    8.retour du rsultat9.retour du rsultat

  • 23

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    45

    Cycle de vie dun Bean Session sans tat

    Nexiste pas

    Prt

    1.create

    2. newInstance

    3. setSessionContext

    4. ejbCreate

    Attention,

    Appel non rentrant

    1. methode

    1.remove

    2.ejbRemove

    Terminer un Bean,

    linitiative

    -de lutilisateur

    -du conteneur

    Opration sur Home

    Opration sur instance

    A linitiative du client

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    46

    Cycle de vie dun Bean Session avec tat

    Nexiste pas

    Prt

    1.create

    2. newInstance

    3. setSessionContext

    4. ejbCreate

    Attention,

    Appel non rentrant

    1. methode

    1.remove

    2.ejbRemove

    Terminer un Bean,

    linitiative

    -de lutilisateur

    -du conteneur

    Opration sur Home

    Opration sur instancePassif

    ejbPassivate

    ejbCreate

    A linitiative

    du conteneur

    quivalent au mcanisme de SWAP

    en mmoire virtuelle

    A linitiative du client

  • 24

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    47

    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

    CalcCalcrep.CalcHomerep.Calcrep.CalcBean Stateless Container

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    48

    Spcifications des proprits du Bean

    Calc*

    Required

  • 25

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    49

    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.

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    50

    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 }

  • 26

    Les composants EJB

    [email protected] - CEDRIC ( CNAM) -

    51

    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.