Introduction aux Entreprise Java Beans - PowerPoint PPT Presentation

1 / 43
About This Presentation
Title:

Introduction aux Entreprise Java Beans

Description:

Supportant la mont e en charge (scalable) Disponibles. Favorisant la r utilisation ... Masquer la complexit de l'entreprise aux clients. Architecture ... – PowerPoint PPT presentation

Number of Views:95
Avg rating:3.0/5.0
Slides: 44
Provided by: francoi81
Category:

less

Transcript and Presenter's Notes

Title: Introduction aux Entreprise Java Beans


1
Introduction aux Entreprise Java Beans
2
Problème
  • Construire des applications pour entreprises
  • Sures
  • Sécurisées
  • Supportant la montée en charge (scalable)
  • Disponibles
  • Favorisant la réutilisation
  • Maintenables et extensibles
  • Pour moins cher

3
Moyen
  • Utiliser une architecture distribuée
  • Plusieurs tiers
  • Les clients (front end)
  • Les sources de données (back end)
  • Un ou plusieurs tiers entre eux pour
  • Implanter les nouveaux services
  • Intégrer les différentes sources de données
  • Masquer la complexité de lentreprise aux clients

4
Architecture à composants distribués
  • Permettent la construction dapplications
    multi-tiers
  • Objectif
  • Simplifier la création dapplication à base
    dobjets distribués.
  • Promouvoir la programmation par composant pour le
    coté serveur

5
Composant logiciel
  • Doit permettre la construction de logiciel par
    composition
  • Exporte des propriétés et des méthodes
  • Peut être configuré de façon externe
  • Un composant peut être réutilisable à différent
    degré
  • Composants connus
  • COM/DCOM
  • Java Beans
  • Enterprise Java Beans
  • Composants Corba

6
Objet distribué (rmi)
7
Middleware Explicite
transfer(Account account1, Account account2, long
amount) // 1 Call middleware API to perform a
security check // 2 Call middleware API to start
a transaction // 3 Call middleware API to load
rows from the database // 4 Subtract the balance
from one account, add to the other // 5 Call
middleware API to store rows In the database //
6 Call middleware API to end the transaction
8
Middleware implicite
9
Architecture multi-tiers
10
Les solutions existantes
  • Microsoft DNA (Distributed interNet Applications
    Architecture)
  • Windows NT DCOM MSMQ (message queue) MTS
    (transactions) Wolfpack (clustering) IIS (web
    server) MMC (administration et déploiement)
  • Sun J2EE (spécification)
  • OMG Corba (specification) et les composants Corba.

11
J2EE
  • Définit une architecture standard incluant
  • Un modèle de programmation (application
    multi-tiers, client légers)
  • Une plate-forme (ensemble de spécifications et de
    politiques requises)
  • Un ensemble de test de compatibilité
  • Une implantation de référence

12
Architecture dune application J2EE
13
La plateforme J2EE
  • EJB définit la façon dont les composant doivent
    être écrit et le contrat quils doivent respecter
    avec le serveur dapplication
  • RMI communication inter procédés
  • JNDI service de nommage
  • JDBC connection vec les bases de données
  • JTA service de transaction
  • JMS service de messagerie
  • JSP servlet et Java Server Page adapté à la
    construction de composant réseau
  • Java IDL permet lintégration avec dautres
    langages (en particulier à travers CORBA)
  • JavaMail
  • Connectors intégration à des systèmes
    dinformation existant
  • XML

14
Les technologies
15
Les Enterprise JavaBeans
  • Spécification dune architecture permettant la
    création dapplications distribuées
  • 2 versions
  • 1.1 la plus courante
  • 2.0 la plus récente
  • Implantations de la spec
  • BEA WebLogic, Jonas, Borland Appserver, IBM
    Websphere, Jboss (open source)
  • Composant développé pour être exécuté sur un
    serveur dEJB
  • Ne pas confondre avec un java bean

16
Objectifs des EJB
  • Fournir une plate-forme standard pour la
    construction dapplications distribuées en Java
  • Simplifier lécriture de composants serveurs
  • Portabilité
  • Considérer le développement, le déploiement et
    lexécution des applications

17
Division des responsabilités
  • Le fournisseur de bean
  • Produit les composants métier
  • Le fournisseur de conteneur EJB
  • Fournit lenvironnement permettant lexécution
    des beans
  • Le fournisseur de serveur EJB
  • Fournit lenvironnement dexécution pour un ou
    plusieurs conteneurs
  • Lassembleur dapplication
  • Le déployeur (installateur)
  • Ladministrateur

18
Les Enterprise Beans
  • Composants qui peuvent être déployés dans un
    environnement multi-tiers et distribué.
  • Exposent une interface qui peut être appelé par
    ses clients
  • Configurés de façon externe
  • Linterface et limplantation du bean doivent
    être conforme à la spécification EJB
  • Les clients peuvent être
  • Un servlet
  • Une applet
  • Un autre bean

19
Les types de Beans
  • Session Beans contiennent la logique métier de
    lapplication
  • Stateful session bean
  • Stateless session bean
  • Entity Beans contiennent la logique de gestion
    des données persistantes
  • Message bean contiennent la logique orientée
    message

20
Session Bean
  • Fournit un service à un client
  • Durée de vie limitée à celle du client
  • Effectue des calculs ou des accès à une base de
    donnée
  • Peut être transactionnel
  • Non recouvrable
  • Peuvent être sans état ou conversationnel
    (stateless ou stateful)

21
Exemple de Session bean
  • public class CartBean implements SessionBean
  • String customerName
  • Vector contents
  • public void ejbCreate(String person) throws
    CreateException
  • initialisation du bean
  • // business method
  • public void addBook(String title) // code
    de la méthode
  • public void removeBook(String title) throws
    BookException
  • public Vector getContents()
  • // methodes appelées par le conteneur
  • public void ejbRemove()
  • public void ejbActivate()
  • public void ejbPassivate()
  • public void setSessionContext(SessionContext
    sc)

22
Linterface
  • Linterface décrit le contrat avec les clients
  • public interface Cart extends EJBObject
  • public void addBook(String title) throws
    RemoteException
  • public void removeBook(String title) throws
    BookException, RemoteException
  • public Vector getContents() throws
    RemoteException

23
La factory
  • Définit les méthodes permettant de créer, trouver
    et détruire des objets EJB
  • public interface CartHome extends EJBHome
  • Cart create(String person) throws
    RemoteException, CreateException

24
Le descripteur de déploiement
  • Fournit les informations nécessaires au
    déploiement dans le conteneur et pour la
    configuration des intercepteurs
  • ltenterprise-beansgt
  • ltsessiongt
  • ltdisplay-namegtCartEJBlt/display-namegt
  • ltejb-namegtCartEJBlt/ejb-namegt
  • lthomegtCartHomelt/homegt
  • ltremotegtCartlt/remotegt
  • ltejb-classgtCartBeanlt/ejb-classgt
  • ltsession-typegtStatefullt/session-typegt
  • lttransaction-typegtContainerlt/transaction
    -typegt
  • ltsecurity-identitygt
  • ltdescriptiongtlt/descriptiongt
  • ltuse-caller-identitygtlt/use-caller-ident
    itygt
  • lt/security-identitygt
  • lt/sessiongt
  • lt/enterprise-beansgt

25
Déploiement (suite)
  • ltassembly-descriptorgt
  • ltmethod-permissiongt
  • ltrole-namegtuserltrole-name/gt
  • ltmethodgt
  • ltejb-namegtCartEJBlt/ejb-namegt
  • ltmethod-intfgtRemotelt/method-intfgt
  • ltmethod-namegtgetContentslt/method-namegt
  • ltmethod-params /gt
  • lt/methodgt
  • lt/method-permissiongt
  • ltcontainer-transactiongt
  • ltmethodgt
  • ltejb-namegtCartEJBlt/ejb-namegt
  • ltmethod-intfgtRemotelt/method-intfgt
  • ltmethod-namegtgetContentslt/method-namegt
  • ltmethod-params /gt
  • lt/methodgt
  • lttrans-attributegtRequiredlt/trans-attributegt
  • lt/container-transactiongt

26
Le client
  • public class CartClient
  • public static void main(String args)
  • Context initial new InitialContext() //
    context JNDI
  • CartHome home initial.lookup("javaco
    mp/env/ejb/SimpleCart")
  • // Recherche de linterface de la factory
  • // Creation de lobjet session
  • Cart shoppingCart home.create("Duke
    DeEarl xs)
  • // appel de quelques business méthodes
  • shoppingCart.addBook("The Martian
    Chronicles")
  • Vector bookList new Vector()
  • bookList shoppingCart.getContents()
  • shoppingCart.removeBook("Alice in
    Wonderland")
  • // suppression de lobjet session
  • shoppingCart.remove()

27
Les entity beans
  • Implantation dobjets métiers persistants
    (client, compte,)
  • Persistance gérée par
  • Les conteneurs (CMP)
  • Le bean lui-même (BMP)
  • Le conteneur gère également les transactions et
    la sécurité pour le composant.
  • Utile pour gérer les accès concurrents à des
    données persistantes.

28
Exemple dentity bean (CMP)
  • public class BookEJB implements
    javax.ejb.EntityBean
  • public String author
  • public String titlel
  • public int price
  • private EntityContext context
  • public String getTitle() return title
  • public String getAuthor() return author
  • public int getPrice() return price
  • public void setPrice(int _price)
  • price_price
  • public String ejbCreate (String _author,
    String _title) throws CreateException
  • author_author
  • title_title
  • price0
  • return null
  • // Méthodes requises par le conteneur
  • public void ejbPostCreate(String
    _author,String _title)
  • public void ejbRemove()
  • public void ejbLoad()
  • public void ejbStore()
  • public void setEntityContext(EntityContext
    context)
  • this.context context
  • public void unsetEntityContext()
  • contextnull
  • public void ejbActivate()
  • public void ejbPassivate()

29
Home interface
  • public interface BookHome extends EJBHome
  • public Book create(String id, String url) throws
    RemoteException, CreateException
  • public Book findByPrimaryKey (String id) throws
    RemoteException, FinderException
  • public Collection findAll() throws
    RemoteException, FinderException
  • Public Collection findByAuthor(String author)
    throws RemoteException, FinderException

30
Interface de lEntity Bean
  • public interface Book extends EJBObject
  • public String getAuthor() throws
    RemoteException
  • public String getTitle() throws
    RemoteException
  • public int getPrice() throws RemoteException
  • public void setPrice(int mode) throws
    RemoteException

31
Le descripteur de lentity bean
  • ltentitygt
  • ltdisplay-namegtBooklt/display-namegt
  • ltejb-namegtBooklt/ejb-namegt
  • lthomegtBookHomelt/homegt
  • ltremotegtBooklt/remotegt
  • ltejb-classgtBookEJBlt/ejb-classgt
  • ltpersistence-typegtContainerlt/persis
    tence-typegt
  • ltprim-key-classgtjava.lang.Stringlt/p
    rim-key-classgt
  • ltreentrantgtFalselt/reentrantgt
  • ltcmp-fieldgtltfield-namegttitlelt/field
    -namegtlt/cmp-fieldgt
  • ltcmp-fieldgtltfield-namegtauthorlt/fiel
    d-namegtlt/cmp-fieldgt
  • ltcmp-fieldgtltfield-namegtpricelt/field
    -namegtlt/cmp-fieldgt
  • ltprimkey-fieldgttitlelt/primkey-fieldgt
  • ltquerygt
  • ltdescriptiongtlt/descriptiongt
  • ltquery-methodgt
  • ltmethod-namegtfindByAuthorlt/met
    hod-namegt
  • ltmethod-paramsgtltmethod-paramgtjava.lang.Strin
    glt/method-paramgtlt/method-paramsgt
  • lt/query-methodgt

32
Configuration des transactions
  • Attribut attaché à chaque description de bean
  • Required
  • RequiredNew
  • Mandatory
  • NotSupported
  • Supports
  • Never

33
Message Driven Bean (ejb2.0)
  • Intégration des EJB et de JMS
  • Interactions asynchrones
  • Utilisé pour réagir à des messages JMS
  • Stateless bean
  • Une seule méthode dans linterface
  • onMessage()

34
Exemple de message bean
  • ltmessage-drivengt
  • ltejb-namegtValueContainerListenerlt/ejb-namegt
  • ltejb-classgthero.container.ValueContainerListene
    rlt/ejb-classgt
  • ltmessage-selectorgtJMSType'ValueContainer
    'lt/message-selectorgt
  • lttransaction-typegtContainerlt/transaction-
    typegt
  • ltejb-refgt
  • ltdescriptiongtValue Container
    Homelt/descriptiongt
  • ltejb-ref-namegtejb/valuecontainerlt/ejb-ref-na
    megt
  • ltejb-ref-typegtEntitylt/ejb-ref-typegt
  • ltejb-linkgtValueContainerlt/ejb-linkgt
  • lthomegthero.container.ValueContainerHomelt/hom
    egt
  • ltremotegthero.container.ValueContainerlt/remot
    egt
  • lt/ejb-refgt
  • ltmessage-driven-destinationgt
  • ltdestination-typegtjavax.jms.Topiclt/dest
    ination-typegt
  • ltsubscription-durabilitygtNonDurablelt/
    subscription-durabilitygt
  • lt/message-driven-destinationgt
  • lt/message-drivengt

35
EJB Object
36
Utilisation dun EJB Object
37
Paquetage dapplication
38
Déploiement
  • Création dun paquetage contenant
  • Les classes des beans
  • Le fichier de description
  • Les fichiers de configuration spécifique au
    serveur
  • Dautres librairies
  • Mise en place dans le serveur (outils spécifique
    ou déploiement à chaud)

39
Intérêt des EJB
  • Simplicité de lécriture des composants
  • Mais le design est plus complexe
  • Portabilité des composants
  • A lexception des adaptations des serveurs
  • Réutilisation/Composition
  • Il faut quand même programmer
  • Indépendance par rapport aux vendeurs

40
Bénéfices dun serveur dEJB
  • Gestion automatisée des stocks de ressources
  • Gestion automatisée du cycles de vie des
    composants
  • Gestion de la concurrence
  • Scalabilité
  • Fonctionnalités déclaratives
  • Disponibilité et tolérance aux pannes
  • Modèle dobjet distribué

41
Limites actuelles (variables selon les serveurs)
  • Maturité de la spécification, des technologies,
  • Moins vrai depuis la version 2.0
  • Performances ?
  • Environnements de développement
  • Complexité du design
  • Expérience des développeurs

42
Bibliographie et sources des schémas
  • J2EE Specification
  • Java.sun.com/products/j2ee
  • Enterprise Java Beans Specification 1.1 et 2.0
  • Java.sun.com/products/ejb
  • Mastering Enterprise JavaBeans and the Java 2
    Platform Enterprise Edition Ed Roman Wiley
    Computer publishing 1999
  • www.theserverside.com
  • java.sun.com/j2ee/tutorial
  • www.jboss.org (serveur Open Source)
  • Support de cours de Didier Donsez (université de
    Valenciennes)
  • J2EE blueprints (java.sun.com)
  • Mastering Enterprise JavaBeans II Ed Roman
    -(www.theserverside.com)

43
Exemple dapplication J2EE
Write a Comment
User Comments (0)
About PowerShow.com