Aucun titre de diapositive - PowerPoint PPT Presentation

1 / 120
About This Presentation
Title:

Aucun titre de diapositive

Description:

EJB architecture will make possible to build distributed applications by ... EJB Architecture will adress the development, deployment, and runtime aspects of ... – PowerPoint PPT presentation

Number of Views:72
Avg rating:3.0/5.0
Slides: 121
Provided by: IMAT7
Category:

less

Transcript and Presenter's Notes

Title: Aucun titre de diapositive


1
EJB 2.0
Enterprise Java Bean
Xavier BLANC Xavier.Blanc_at_lip6.fr
2
Plan
  • Introduction
  • Architecture
  • Développement
  • Session
  • Entity
  • Message Driven Bean
  • Transaction
  • Security
  • Environnement
  • Ejb-jar
  • Best pratices
  • Conclusion

3
1 - Introduction
4
Goals
1 - Introduction
  • EJB architecture will be the standard for
    building distributed object-oriented business
    application in Java.
  • EJB architecture will make possible to build
    distributed applications by combining components
    developed using tools from different vendors.
  • EJB architecture will make it easy to write
    applications (without knowing the low-level
    details).
  • EJB will follow the WORA
  • EJB Architecture will adress the development,
    deployment, and runtime aspects of an enterprise
    applications life cycle.

5
Exemple dutilisation
1 - Introduction
Bean façade fournissant tous les services
(création commande, achat produit, )
Beans représentant les données (commande,
produit, )
Server EJB
Server EJB
Mainframe / BD
Clients (Java, Web, CORBA).
6
2 - Architecture
7
Overview
2 - Architecture
  • Enterprise JavaBean is an architecture for
    component based distributed computing
  • Enterprise Beans are components of distributed
    transaction-oriented enterprise applications

8
Component characteristics
2 - Architecture
  • An enterprise bean typically contains business
    logic that operates on the enterprises data.
  • An enterprise beans instances are created and
    managed at runtime by a Container.
  • An enterprise bean can be customized at
    deployment time by editing its environment
    entries.
  • Various services information, such as a
    transaction and security attributes, are separate
    from the enterprise bean class. This allows the
    services information to be managed by tools
    during application assembly and deployment.
  • Client access is mediated by the Container in
    which the enterprise Bean is deployed.

9
Types de Roles
2 - Architecture
  • Bean provider
  • Application assembler
  • Deployer
  • System administrator
  • EJB server provider
  • EJB container provider

Development
Production
EJB Architecture
10
Types de Bean
2 - Architecture
  • Session Bean réalise une tache au nom du client
  • Stateful Bean avec état (1 bean par
    utilisateur)
  • Stateless Bean sans état (1 bean pour plusieurs
    utilisateurs)
  • Entity Bean représente une donnée (pérenne) de
    lentreprise
  • Message Driven Bean Communication par message
    (lien vers JMS)

11
Local vs Remote Bean
  • Afin daméliorer les performances, larchitecture
    EJB contient (à partir de la version 2.0) des
    beans locaux.
  • Un bean local nest accessible que si le client
    est dans la même JVM.
  • Attention Passage des paramètres par référence.

12
EJB Contracts
2 - Architecture
Client-View
Client
Enterprise beaninstances
ComponentContract
Container
EJB Server
Deployment Descriptor
13
Client-view (Local / Remote)
2 - Architecture
  • Identité du composant
  • Le container fournit une identité unique par
    composant
  • Home interface
  • Le container fournit des opérations de gestion de
    composants Create, Remove, Find
  • Component interface
  • Le container permet aux clients dinvoquer les
    méthodes du composants
  • Metadata (Remote only)
  • Invocation dynamique
  • Handle (Remote only)

14
Component Contract
2 - Architecture
  • Le session bean provider doit suivre les règles
    dimplémentation. Le conteneur doit déléguer les
    appels des clients vers les beans et fournir les
    services utilisés par le bean.
  • Lentity bean provider doit suivre les règles
    dimplémentation. Le conteneur doit déléguer les
    appels des clients vers les beans, fournir les
    services utilisés par le bean et gérer
    automatiquement la persistance.
  • Le message driven bean provider doit suivre les
    règles dimplémentation. Le conteneur doit
    retourner les messages vers les beans
    correspondant.

15
Deployment descriptor
2 - Architecture
  • Un ejb-jar est le format standard de packaging de
    beans
  • Contient les classes du beans
  • Contient un descripteur de déploiement (sous
    format XML)

16
3 - Développement
  • 3-1 Session Bean

17
Overview
3.1 Session Bean
  • For a client, a session object is a
    non-persistent object that implements some
    business logic running on the server.
  • One way to think of a session object is as a
    logical extension of the client program that runs
    on the server.
  • A session object is not shared among multiple
    clients.

18
Client View
3.1 Session Bean
  • Un client accède à un Bean à travers son
    interface (RemoteInterface ou LocalInterface)
  • Lobjet qui implante linterface est construit
    par le conteneur (EJBObject ou EJBLocalObject)
  • existe dans un container
  • a une identité
  • nest pas persistant
  • Plusieurs objets peuvent exister dans un même
    conteneur

19
Client View
3.1 Session Bean
  • La création dune instance de bean se fait par
    lintermédiaire de la Home Interface
  • Le container exporte la référence de la Home
    Interface grâce à JNDI
  • La Home Interface permet aussi de chercher et de
    supprimer les instances

20
Client View
3.1 Session Bean
Client
EJB 1
EJB 2
21
Récupération de la Home
3.1 Session Bean
  • La récupération de la Home se fait via
    JNDI. //Preparation du context JNDI Context
    iniCtx new InitialContext() //Obtention de
    la référence dobjet Object ref
    iniCtx.loohup("java.comp/env/ejb/monBean") //Ca
    st (si Local alors cast à la Java) MonBeanHome
    home (MonBeanHome)
    PortableRemoteObject.narrow(obj,
    MonBeanHome.class)

22
Création dune instance
3.1 Session Bean
  • La Home interface doit fournir une ou plusieurs
    méthodes de création dinstances createltMethodgt
    (ces méthodes sont à la charge du Bean Provider)
  • //Obtention de la Home (voir slide
    précédent) MonBeanHome home //Appel dune
    méthode create MonBean bean home.create() //M
    onBean bean home.createName("xavier")

23
Utilisation du Bean
3.1 Session Bean
  • Lutilisation du bean se fait par des appels
    classiques.
  • //Création du Bean (voir slide
    précédent) MonBean bean //Appel dune méthode
    XXX bean.getProductPrice("sourie")

24
Handle
3.1 Session Bean
  • Un Handle est un objet qui représente une
    référence vers un bean.
  • Il est possible de stocker un Handle sur mémoire
    secondaire pour récupérer plus tard la référence
    dun bean.
  • Méthodes
  • handle.getEJBObject() // pour retrouver la
    référence
  • bean.getHandle() //pour obtenir un handle

25
Suppression
3.1 Session Bean
  • Deux façons existent pour supprimer un bean
  • remove() // directement sur le bean
  • remove(Handle h) // sur la Home

26
Cycle de vie
3.1 Session Bean
27
Component Contract
3.1 Session Bean
  • Une instance de Session Bean représente une
    session entre le client et lapplication.
  • Ses champs contiennent létat de la session.
  • Typiquement une instance de Session Bean lit et
    écrit des données dans une base de données (via
    des Entity Bean).
  • La vie de linstance de Session Bean correspond à
    la vie du client.

28
Component Contract
3.1 Session Bean
  • Un container gère la mémoire de son environnement
    de travail. Pour cela, il peut stocker les beans
    sur un autre support.
  • Chacun des bean doit donc implanter deux
    fonctions.
  • Une fonction ejbPassivate appelée lors du
    transfert du bean sur un autre support.
  • Une fonction ejbActivate appelée lors du
    transfert du bean vers le container.

29
Component Contract
3.1 Session Bean
  • Afin de facilité les stratégies de passivation,
    deux sortes de Session Bean ont été définies
  • STATEFUL Avec état. Tout le contenu du Bean doit
    être sauvegardé.
  • STATELESS Sans état. Le contenu du Bean na pas
    à être sauvegardé.

30
SessionContext
3.1 Session Bean
  • Lors dune création dinstance, le conteneur
    associe à chaque instance un contexte de session
    (interface SessionContext)
  • Cet objet permet de
  • Récupérer une référence vers lobjet ou vers la
    Home
  • Récupérer les informations relatives à la
    sécurité (Principal)
  • Récupérer les information relatives aux
    transactions (UserTransaction, RollBack mode).
  • Le Bean Provider doit offrir les méthodes
    nécessaires à lenregistrement de cet objet.

31
Création dune Instance de Session Bean Stateful
3.1 Session Bean
  • Client EJB Home EJB Object Context
    Instance

create(args)
new
new
new
setSessionContext()
ejbCreate(args)
32
Cycle de Vie STATEFUL
3.1 Session Bean
33
Création dune Instance de Session Bean Stateless
(1/2)
3.1 Session Bean
  • Client EJB Home EJB Object Context
    Instance

Create()
new
34
Création dune Instance de Session Bean Stateless
(2/2)
3.1 Session Bean
  • Container Context Instance

new
new
setSessionContext()
ejbCreate()
35
Cycle de vie STATELESS
3.1 Session Bean
36
Developpement Session Bean
3.1 Session Bean
  • Trois classes à développer
  • La classe dimplémentation du bean
  • Interface du bean (Local ou Remote)
  • Home Interface (Local ou Remote)
  • Dans les AGL, il suffit souvent de développer la
    classe dimplémentation du bean.

37
Classe dimplémentation
3.1 Session Bean
  • Doit implanter javax.ejb.SessionBean.
  • ejbPassivate(), ejbActivate(), ejbRemove(),
    setSessionContext()
  • Doit être public et pas abstract pas final.
  • Doit disposer dun constructeur public sans
    paramètre.
  • Ne doit pas définir de méthode finalize().
  • Doit implanter les méthodes ejbCreateltMethodgt().
  • Doivent être public
  • Ne doivent pas être final ou static
  • Les arguments doivent être valide RMI/IIOP
  • Doivent retourner void
  • Peuvent retourner lexception java.ejb.CreateExcep
    tion
  • Doit implanter les méthodes business.
  • Ne doivent pas avoir un nom qui commence par ejb
  • Doivent être public
  • Ne doivent pas être final ou static
  • Les arguments doivent être valide RMI/IIOP

38
Interface Remote
3.1 Session Bean
  • Doit hériter de javax.ejb.EJBObject
  • Les méthodes de linterface doivent correspondre
    aux méthodes business accessibles à distance de
    la classe dimplémentation.
  • Doivent retourner lexception java.rmi.RemoteExcep
    tion

39
Home Remote
3.1 Session Bean
  • Doit hériter de javax.ejb.EJBHome
  • Les méthodes de la Home doivent correspondre aux
    méthodes ejbCreateltMethodgt de la classe
    dimplémentation.
  • Doivent retourner lexception javax.ejb.CreateExce
    ption

40
Interface Local
3.1 Session Bean
  • Doit hériter de javax.ejb.EJBLocalObject
  • Aucune méthode ne doit retourner lexception
    java.rmi.RemoteException
  • Les méthodes de linterface doivent correspondre
    aux méthodes business accessibles de la classe
    dimplémentation.

41
Home Local
3.1 Session Bean
  • Doit hériter de javax.ejb.EJBLocalHome
  • Aucune méthode ne doit retourner lexception
    java.rmi.RemoteException
  • Les méthodes de la Home doivent correspondre aux
    méthodes ejbCreateltMethodgt de la classe
    dimplémentation.

42
Exemple
3.1 Session Bean
  • public class CalculatriceBean implements
    javax.ejb.SessionBean
  • / Méthodes business. /
  • public double add(double v1,double v2) return
    v1v2
  • public double sub(double v1,double v2) return
    v1-v2
  • public double mul(double v1,double v2) return
    v1v2
  • public double div(double v1,double v2) return
    v1/v2
  • / Méthodes de creation. /
  • public void ejbCreate()
  • / Méthodes de l'interface SessionBean. /
  • public void ejbActivate()
  • public void ejbPassivate()
  • public void ejbRemove()
  • public void setSessionContext(SessionContext
    sc) this.sc sc
  • protected SessionContext sc

43
Exemple
3.1 Session Bean
  • import javax.ejb.EJBObject
  • import java.rmi.RemoteException
  • 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

44
Exemple
3.1 Session Bean
  • import javax.ejb.EJBHome
  • import javax.ejb.CreateException
  • import javax.ejb.RemoveException
  • public interface CalculatriceHome extends EJBHome
  • public CalculatriceRemote create() throws
    CreateException

45
A vous de jouer
3.1 Session Bean
  • Donner des exemples de beans STATEFUL et
    STATELESS
  • Définissez leurs classes
  • Vos critiques ?

46
3 - Développement
  • 3-2 Entity Bean

47
Overview
3.2 Entity Bean
  • For a client, an entity bean is a component that
    represents an object-oriented view of some
    entities stored in a persistent storage, such as
    a database, or entities that are implemented by
    an existing enterprise application.

48
Client View
3.2 Entity Bean
  • Les principes de la vue cliente des Entity Bean
    sont basés sur les principes de la vue cliente
    des Session Bean
  • Les instances sont créées via la Home
  • La home est accessible via JNDI
  • Le client accède aux beans via leur interface
  • Identité des objets
  • La différence fondamentale est que les Entity
    Bean représentent des données pérennes. Leur
    durée de vie est infinie.

49
Architecture
3.2 Entity Bean
EJB 1
Client
EJB 2
50
Trouver un bean
3.2 Entity Bean
  • Une Home définit une ou plusieurs méthodes
    findltMethodgt pour retrouver des entity beans ou
    des ensembles dentity beans.
  • La méthode findByPrimaryKey() est toujours
    fournie. Le type de la clé peut être nimporte
    quel type conforme à RMI/IIOP

51
Vie dun Entity Bean
3.2 Entity Bean
52
Component Contract
3.2 Entity Bean
  • Un Entity Bean est une réification dune donnée.
    La durée de vie de la donnée est infinie.
  • Un Entity Bean est fortement lié avec une BD.
  • La persistance dun bean peut être
  • gérée par le conteneur CMP
  • gérée par le bean lui-même BMP

53
Component Contract CMP
3.2 Entity Bean
  • Pour gérer la persistance par le conteneur
  • Les champs persistant dun Entity Bean CMP
    doivent être spécifiés dans le descripteur de
    déploiement.ltcmp-fieldgtltfield-namegtnomlt/field-nam
    egtlt/cmp-fieldgt
  • Des relations entre Entity Bean de type 11, 1
    et peuvent être spécifiées dans le
    descripteur de déploiement.
  • Utilisation de EJB QL pour générer les méthodes
    ejbFindltMethodgt et ejbSelectltMethodgt.
  • Le conteneur fait appel aux méthodes ejbStore et
    ejbLoad du bean lors dun passage à la mémoire
    secondaire. Ces dans ces méthodes que le bean
    provider doit recalculer les propriétés éphémères
    du bean.

54
Component Contract BMP
3.2 Entity Bean
  • La persistance est entièrement à la charge du
    bean provider.
  • Le lien avec la BD est donc entièrement à la
    charge du bean provider.
  • Le bean peut être sauvegardé à nimporte quel
    moment (après chaque appel de méthode).
  • Lorsque le conteneur a besoin de sauvegarder le
    bean, il fait appel aux méthodes ejbLoad et
    ejbStore

55
EntityContext
3.2 Entity Bean
  • Lors dune création dinstance, le conteneur
    associe à chaque instance un contexte de session
    (interface EntityContext)
  • Cet objet permet de
  • Récupérer une référence vers lobjet ou vers la
    Home
  • Récupérer les informations relatives à la
    sécurité (Principal)
  • Récupérer les information relatives aux
    transactions (UserTransaction, RollBack mode).
  • Le Bean Provider doit offrir les méthodes
    nécessaires à lenregistrement de cet objet.

56
Cycle de vie CMP
3.2 Entity Bean
57
Cycle de vie BMP
3.2 Entity Bean
58
EJB QL
3.2 Entity Bean
  • Langage pour la spécification des méthodes
    findltMethodgt et selectltMethodgt.
  • Compilé vers des langages cible de BD (SQL, )
  • Utilise les informations définies dans le
    descripteur de déploiement (champs persitents et
    relations).
  • Exclusivement Entity Bean CMP.

59
EJB QL Exemples
3.2 Entity Bean
  • Find all orders SELECT OBJECT(o)FROM Order o
  • Find all orders that need to be shipped in
    CASELECT OBJECT(o)FROM Order oWHERE
    o.shipping_address.stateCA

60
Entity Bean Transaction
3.2 Entity Bean
  • Remarquons que les Entity Beans sont souvent
    utilisés par plusieurs clients en parallèle.
  • Il faut donc faire attention aux problèmes de
    cohérence.
  • Donc il faut utiliser les mécanismes de
    transaction proposés par EJB.

61
Developpement Entity Bean
3.2 Entity Bean
  • Classes à développer
  • La classe dimplémentation du bean
  • La classe de la PrimaryKey
  • Interface du bean (Local ou Remote)
  • Home Interface (Local ou Remote)
  • Dans les AGL, des wizards permettent de
    construire des EJB Entity à partir de shéma de BD
    et réciproquement.

62
Classe dimplémentation CMP
3.2 Entity Bean
  • Doit implanter javax.ejb.EntityBean
  • Doit être public et abstract
  • Doit disposer dun constructeur public sans
    paramètre.
  • Ne doit pas définir de méthode finalize().
  • Doit implanter les méthodes ejbCreateltMethodgt()
    et ejbPostCreate().
  • Doivent être public
  • Ne doivent pas être final ou static
  • Les arguments doivent être valide RMI/IIOP
  • Doivent retourner le type de la clé primaire
  • Peuvent retourner lexception java.ejb.CreateExcep
    tion
  • Doit disposer daccesseur abstract pour les
    champs persistent (get, set).
  • Ne doit pas définir de méthode ejbFindltMethodgt,
    celles-ci seront générées.
  • Doit définir les méthodes ejbSelectltMethodgt
    abstract

63
Classe dimplémentation BMP
3.2 Entity Bean
  • Doit implanter javax.ejb.EntityBean
  • Doit être public et pas abstract
  • Doit disposer dun constructeur public sans
    paramètre.
  • Ne doit pas définir de méthode finalize().
  • Doit implanter les méthodes ejbCreateltMethodgt()
    et ejbPostCreate().
  • Doivent être public
  • Ne doivent pas être final ou static
  • Les arguments doivent être valide RMI/IIOP
  • Doivent retourner le type de la clé primaire
  • Peuvent retourner lexception java.ejb.CreateExcep
    tion
  • Doit disposer daccesseur abstract pour les
    champs persistent (get, set).
  • Doit définir les méthodes ejbFindltMethodgt, public.

64
Interface Remote
3.2 Entity Bean
  • Doit hériter de javax.ejb.EJBObject
  • Les méthodes de linterface doivent correspondre
    aux méthodes business accessibles à distance de
    la classe dimplémentation.
  • Doivent retourner lexception java.rmi.RemoteExcep
    tion

65
Home Remote
3.2 Entity Bean
  • Doit hériter de javax.ejb.EJBHome
  • Les méthodes de la Home doivent correspondre aux
    méthodes ejbCreateltMethodgt de la classe
    dimplémentation.
  • Doivent retourner lexception javax.ejb.CreateExce
    ption
  • Les méthodes de la Home doivent correspondre aux
    méthodes ejbFindltMethodgt de la classe
    dimplémentation
  • Doivent retourer lexception javax.ejb.FinderExcep
    tion

66
Interface Local
3.2 Entity Bean
  • Doit hériter de javax.ejb.EJBLocalObject
  • Les méthodes de linterface doivent correspondre
    aux méthodes business accessibles à distance de
    la classe dimplémentation.

67
Home Local
3.2 Entity Bean
  • Doit hériter de javax.ejb.EJBLocalHome
  • Les méthodes de la Home doivent correspondre aux
    méthodes ejbCreateltMethodgt de la classe
    dimplémentation.
  • Doivent retourner lexception javax.ejb.CreateExce
    ption
  • Les méthodes de la Home doivent correspondre aux
    méthodes ejbFindltMethodgt de la classe
    dimplémentation
  • Doivent retourer lexception javax.ejb.FinderExcep
    tion

68
Exemple (CMP)
3.2 Entity Bean
ltcmp-fieldgt ltfield-namegtnomlt/field-namegt lt/cmp
-fieldgt ltcmp-fieldgt ltfield-namegtsoldelt/field-na
megt lt/cmp-fieldgt
  • public abstract class CompteBean implements
    javax.ejb.EntityBean
  • / Setters/getters pour l'acces aux données du
    bean. /
  • public abstract String getNom()
  • public abstract double getSolde()
  • public abstract void setNom(String nom)
  • public abstract void setSolde(double solde)
  • / constructeur /
  • public Compte() super()
  • / Méthodes de l'interface Home. /
  • public String ejbCreate(String nom) throws
    CreateException setNom(nom) setSolde(0.0)
    return nom
  • / Méthodes de l'interface Home. /
  • public void ejbPostCreate(String nom)
  • / Méthodes de l'interface EntityBean. /
  • public void ejbActivate()
  • public void ejbPassivate()

69
Exemple (CMP)
3.2 Entity Bean
  • import javax.ejb.EJBObject
  • import javax.ejb.RemoveException
  • public interface Compte extends EJBObject
  • public String getNom() throws RemoveException
  • public double getSolde() throws RemoveException
  • public void setNom(String nom) throws
    RemoveException
  • public void setSolde(double solde) throws
    RemoveException

70
Exemple (CMP)
3.2 Entity Bean
  • import javax.ejb.EJBHome
  • import javax.ejb.CreateException
  • import javax.ejb.RemoveException
  • public interface CompteHome extends
    javax.ejb.EJBHome
  • /create /
  • public String create(String nom) throws
    CreateException, RemoteException
  • /find/
  • public Compte findByPrimaryKey(String key)
    throws FinderException, RemoteException

71
A vous de jouer
3.2 Entity Bean
  • Donner des exemple dEntity Bean
  • Définissez leurs classes
  • CMP ou BMP ?
  • Vos critiques ?

72
3 - Développement
  • 3-3 Message Driven Bean

73
Overview
3.3 Message Driven Bean
  • A message-driven bean is an asynchronous message
    consumer.
  • A message-driven bean is invoked by the container
    as a result of the arrival of a JMS message.
  • A message-driven bean has neither a home nor a
    component interface.
  • A message-driven bean instance is an instance of
    a message-driven bean class.

74
Client View
3.3 Message Driven Bean
  • Pour un client, un driven message bean nest que
    le destinataire dune queue de messages.
  • Le client na aucune visibilité sur le bean
  • Le bean est entièrement masqué.

75
Client View
3.3 Message Driven Bean
Destination
Client
Instances
Bean
Container
76
Obtenir un destinataire JMS
3.3 Message Driven Bean
  • Une Queue JMS est souvent enregistrée dans JNDI
  • Obtenir un destinataire revient à rechercher une
    référence JNDI Context initialContext new
    InitialContext()Queue stockInfoQueue
    (javax.jms.Queue) initialContext.lookup (javac
    omp/env/jms/stockInfoQueue)

77
Component Contract
3.3 Message Driven Bean
  • Le cycle de vie dun Message Driven Bean est
    entièrement géré par le conteneur
  • Le conteneur doit notifier le Message Driven Bean
    lorsque celui-ci reçoit un message (onMessage)
  • Un Message Driven Bean peut être abonné (via
    descripteur de déploiement)
  • à une queue
  • à un topic

78
MessageDrivenContext
3.3 Message Driven Bean
  • Lors dune création dinstance, le conteneur
    associe à chaque instance un contexte de session
    (interface MessageDrivenContext)
  • Cet objet permet de
  • Récupérer les informations relatives à la
    sécurité (Principal)
  • Récupérer les information relatives aux
    transactions (UserTransaction, RollBack mode).
  • Le Bean Provider doit offrir les méthodes
    nécessaires à lenregistrement de cet objet.

79
Cycle de Vie
3.3 Message Driven Bean
80
Développement Driven Message Bean
3.3 Message Driven Bean
  • Une seule classe à développé celle du bean
  • Doit implanter linterface javax.ejb.MessageDriven
    Bean
  • Doit implanter linterface javax.jms.MessageListen
    er
  • Doit être public, non final et non abstract
  • Doit disposer dun constructeur public sans
    argument.
  • Ne doit pas définir de méthode finalize()
  • Doit définir une méthode ejbCreate()
  • Doit définir la méthode onMessage(Message)

81
Exemple
3.3 Message Driven Bean
  • public class MonMessageDrivenBean implements
    javax.ejb.MessageDrivenBean , javax.jms.MessageLis
    tener
  • public MonMessageDrivenBean()
  • //From MessageDrivenBean
  • public void ejbRemove()
  • public ejbCreate()
  • protected MessageDrivenContext ctx
  • public void setMessageDrivenContext(MessageDri
    venContext ctx) this.ctx ctx
  • //From MessageListener
  • void onMessage(Message message) //Business

82
A vous de jouer
3.3 Message Driven Bean
  • Donnez des exemple de MDB
  • Vos critiques ?

83
4 - Transaction
84
Overview
4 Transaction
  • Transactions are a proven technique for
    simplifying application programming.
  • Transactions free the application programmer from
    dealing with the complex issues of failure
    recovery and multi-user programming.
  • If the application programmer uses transactions,
    the programmer divides the applications work
    into units called transactions. The transactional
    system ensures that a unit of work either fully
    completes, or the work is fully rolled back.
  • Furthermore, transactions make it possible for
    the programmer to design the application as if it
    ran in an environment that executes units of work
    serially.

85
Les transactions dans EJB
4 Transaction
  • Le support des transactions réparties est une
    caractéristique principale de larchitecture EJB.
  • Les aspects transactionnels sont
  • Soit gérés par le serveur EJB
  • Utilisation de javax.transaction.UserTransaction
  • Commit RollBack
  • Soit par le bean lui même.
  • La gestion par le serveur EJB est totalement
    transparent.
  • Description dans le descripteur de déploiement

86
Granularité
4 Transaction
  • Spécification dans le descripteur de déploiement
    de la granularité
  • SUPPORTS
  • NOT_SUPPORTED
  • REQUIRED
  • REQUIRES_NEW
  • MANDATORY
  • BEAN_MANAGED transactions à la charge du bean
  • Pour le bean appelant
  • soit il s'exécute dans une transaction
  • soit il s'exécute en dehors de tout contexte
    transactionnel

ltcontainer-transactiongt ltmethodgt ltejb-namegt
EmployeRecord lt/ejb-namegt
ltmethod-namegtlt/method-namegt lt/methodgt
lttrans-attributegt Required lt/trans-attributegtlt/co
ntainer-transactiongt
87
Supports
4 Transaction
  • si l'appelant a une transac. ouverte, l'appelé
    sexécute dans ce contexte
  • sinon aucune transac. nest ouverte

88
NOT_SUPPORTED
4 Transaction
  • L'appelé ne supporte pas les transactions
  • en cas dutilisation dans 1 transac., celle-ci
    est suspendue

89
REQUIRED
4 Transaction
  • si l'appelant a une transac. ouverte, l'appelé
    sexécute dans ce contexte
  • sinon le conteneur commence une nouvelle transac.

90
REQUIRES_NEW
4 Transaction
  • une nouvelle transac. est systématiquement créée

91
MANDATORY
4 Transaction
  • si l'appelant a une transac. ouverte, l'appelé
    sexécute dans ce contexte
  • sinon une erreur est générée

92
5 - Sécurité
93
Overview
5 Sécurité
  • Lessen the burden of the application developer
    (i.e. the Bean Provider) for securing the
    application by allowing greater coverage from
    more qualified EJB roles. The EJB Container
    provider provides the implementation of the
    security infrastructure the Deployer and System
    Administrator define the security policies.
  • Allow the security policies to be set by the
    Application Assembler or Deployer rather than
    being hard-coded by the Bean Provider at
    development time.
  • Allow the enterprise bean applications to be
    portable across multiple EJB Servers that use
    different security mechanisms.

94
La Sécurité dans EJB
5 Sécurité
  • Larchitecture de lEntreprise de Java Bean
    permet de transférer la gestion de la sécurité au
    niveau du serveur. La sécurité au sein des Java
    Bean inclus
  • Un accès à lAPI de sécurité de Java
    (java.security) pour gérer localement la
    sécurité.
  • Une description aux niveau de larchive (XML)
    pour que le serveur gère la sécurité.

95
Sécurité par le Container
5 Sécurité
  • Il est possible de spécifier des règles daccès
    pour chacune des méthodes.
  • Ceci se fait par lintermédiaire du descripteur
    XML
  • Description de rôles
  • Description des règles de sécurités

96
Déclaration XML de rôle
5 Sécurité
  • ltsecurity-rolegt ltdescriptiongt blabla
    lt/descriptiongt ltrole-namegt employe
    lt/role-namegtlt/security-rolegt

97
Déclaration XML de règles
5 Sécurité
  • ltmethod-permissiongt ltrole-namegt employe
    lt/role-namegt ltmethodgt ltejb-namegt
    EmployeServ lt/ejb-namegt ltmethod-namegtlt/m
    ethod-namegt lt/methodgtlt/method-permissiongt

98
La Sécurité dans EJB
5 Sécurité
  • Larchitecture Entreprise Java Bean utilise le
    package de sécurité du langage Java
    java.security. Le package nest pas décrit dans
    la norme, celle-ci nous renvoie à Java.
  • La classe java.security.Principal est plus
    précisément utilisée pour identifier un client.

99
La Sécurité locale
5 Sécurité
  • Un bean a accès aux informations du serveur via
    son contexte. Celui-ci offre donc deux fonctions
    pour permettre à un bean dobtenir lidentité
    dun client.
  • getCallerPrincipal()
  • IsCallerInRole(String role_name)

100
Référence des rôle
5 Sécurité
  • Si bean référence un rôle (isUserInRole())
    ltsecurity-role-refgt ltdescriptiongt blabla
    lt/descriptiongt ltrole-namegt employe
    lt/role-namegtlt/security-role-refgt

101
Déploiement
5 Sécurité
  • Cest lors du déploiement quil faut relier les
    rôles avec les mécanismes de sécurité
  • Roles avec user NT
  • Roles avec user LDAP

102
6 - Environnement
103
Overview
6 Environnement
  • The Application Assembler and Deployer should be
    able to customize an enterprise beans business
    logic without accessing the enterprise beans
    source code.
  • Most enterprise beans must access resource
    managers and external information.
  • The key issue is how enterprise beans can locate
    external information without prior knowledge of
    how the external information is named and
    organized in the target operational environment.
  • The enterprise bean environment mechanism
    attempts to address both of the above issues.

104
JNDI
6 Environnement
  • Pour obtenir une ressource, il est vivement
    conseillé dutiliser JNDI (lenfer des
    ClassLoader)
  • Lespace de nom java/comp/env est alloué pour
    chaque EJB.// Obtain the enterprise beans
    environment naming context.Context initCtx new
    InitialContext()Context myEnv
    (Context)initCtx.lookup("javacomp/env")

105
Variables denvironnement
6 Environnement
  • Il est possible de définir des variables
    denvironnement du bean (! OS)
  • Le nom et le type de ces variables doivent être
    spécifiés dans le descripteur de déploiement (la
    valeur est optionnelle)
  • ltenv-entrygt
  • ltdescriptiongtBlaBlaBla.lt/descriptiongt
  • ltenv-entry-namegtmaxExemptionslt/env-entry-namegt
  • ltenv-entry-typegtjava.lang.Integerlt/env-entry-t
    ypegt
  • ltenv-entry-valuegt15lt/env-entry-valuegt
  • lt/env-entrygt

106
EJB
6 Environnement
  • Il est possible de définir des références entre
    Bean.
  • Le nom et le type du bean doivent être spécifiés
    dans le descripteur de déploiement.
  • Il est conseillé de préfixer le nom par ejb

107
EJB
6 Environnement
  • ltejb-refgt
  • ltdescriptiongtBlablablalt/descriptiongt
  • ltejb-ref-namegtejb/MaRefBean1lt/ejb-ref-namegt
  • ltejb-ref-typegtEntitylt/ejb-ref-typegt
  • lthomegtfr.jussieu.MonBeanHomelt/homegt
  • ltremotegtfr.jussieu.MonBeanlt/remotegt
  • lt/ejb-refgt

108
Autres types de ressources
6 Environnement
  • Vers les BD
  • Connection Factory
  • Vers les Queue ou Topic
  • JMS

109
7 - ejb jar
110
Overview
7 ejb-jar
  • The ejb-jar file format is the contract between
    the Bean Provider and the Application Assembler,
    and between the Application Assembler and the
    Deployer.

111
Items
7 ejb-jar
  • Un ejb-jar est un fichier jar qui contient
  • Le descripteur de déploiement
  • Les classes des Beans
  • Bean, Home, Remote
  • Les autres ressources nécessaires

112
Descripteur de déploiement
7 ejb-jar
  • Fichier XML valide qui décrit un ensemble de
    beans
  • Pour chaque bean
  • Nom du bean, Classes du bean, Type (Entity,
    Session)
  • Caractéristiques pérennes (pour les Entity)
  • Caractéristiques Transactionnelles
  • Caractéristiques Sécurité
  • Environnement

113
Echanges
7 ejb-jar
  • LEjb-jar est lélément déchange entre outils
    (analyse, développement, déploiement, ).
  • Les EJB peuvent donc être considéré comme des
    composants sur étagères.

114
8 Best Practices
115
Sensibilisation
8 Best Practices
  • Larchitecture EJB facilite grandement la tache
    des développeurs en automatisant fortement
    certaines techniques (répartition, sécurité,
    transaction, environnement).
  • Mais, il est important de bien comprendre les
    mécanismes sous-jacent pour maitriser la bête
  • Cas de lexception org.omg.CORBA.COMM_FAILURE

116
Design Pattern, Framework
8 Best Practices
  • Afin de minimiser les communications
    client/server il est intéressant de construire
    une copie locale dun bean Entity, deffectuer
    plusieurs opérations en local et de transmettre
    la copie lorsque cela est nécessaire AccessBean
  • Afin de ne pas mettre tout le traitement dans un
    bean, il est intéressant de construire une classe
    Business et de faire en sorte que le Bean ne soit
    quun objet de délégation (évolution)

117
LEtat du marché
8 Best Practices
  • Jusquà EJB 1.1
  • pas dEntity Bean (surtout pas CMP)
  • pas de sécurité
  • EJB 101 Damnations (article)
  • Aujourdhui EJB 2.0
  • ???

118
9 - Conclusion
119
Success Story ?
9 Conclusion
  • Succès commercial gt Oui
  • Projets (J2EE)
  • Servlet, EJB, BD / CICS
  • Plateforme de en efficace
  • WebSphere IBM, Weblogic BEA, Oracle, JBoss
  • Des inconvénients (structurels ?)
  • Performance, Monté en charge
  • Stabilité (jeunesse du standard)
  • Un concurrence
  • Inexistante jusquà il y a un an
  • .Net Web Services

120
Références
9 Conclusion
  • Spécifications
  • EJB Specification (version 2.0
  • Livres
  • Mastering EJB 2.0
  • EJB Design Pattern
  • Articles
  • EJBs 101 Damnations (Dino Fancellu, Robin Sharp,
    Matt Stephens)
Write a Comment
User Comments (0)
About PowerShow.com