EJB : les fondamentaux

  • Published on
    24-Feb-2016

  • View
    140

  • Download
    0

Embed Size (px)

DESCRIPTION

EJB : les fondamentaux. Michel Buffa ( buffa@unice.fr ), UNSA 2002, modifi par Richard Grin ( version 1.1, 21/11/11 ), avec emprunts aux supports de Maxime Lefranois. Plan du cours. Introduction gnrale EJB : fondamentaux Session Beans Entits Message- Driven Beans - PowerPoint PPT Presentation

Transcript

PowerPoint Presentation

EJB : les fondamentauxMichel Buffa (buffa@unice.fr), UNSA 2002,modifi par Richard Grin (version 1.1, 21/11/11),avec emprunts aux supports de Maxime LefranoisPlan du coursIntroduction gnraleEJB : fondamentauxSession BeansEntitsMessage-Driven BeansConcepts avancs sur la persistanceRelations avec les entitsGestion des transactions2Enterprise Java BeanLes EJBfacilitent la cration d'applications distribues pour les entreprises.Soccupent du traitement mtier de lapplicationPermettent aux dveloppeurs de se concentrer sur les traitements orients mtiers Sont rutilisablesSont assemblables

3Enterprise Java BeanComposant serveur qui encapsule une logique mtier, qui peut tre dploy dans un serveur dapplicationCompos de un ou plusieurs objetsLes appels aux mthodes par les clients de lEJB sont intercepts par le conteneur dEJBRle du conteneurLe conteneur dEJB soccupe de certains traitementsCycle de vie du beanInjection de dpendanceAccs au bean, communication distanceScurit daccsAccs concurrentsTransactions, 2 Types dEJBSession BeanModlise un traitementReprsent par une classe Java et une interface qui expose certaines mthodesMessage Driven Bean (MDB)Consomme des messages asynchrones envoys par des clientsPermettent linterconnexion avec des systmes diffrents (non Java EE) Session BeanModlise un traitement (business process)Correspond un verbe, une actionEx : gestion de compte bancaire, affichage de catalogue de produit, vrifieur de donnes bancaires, gestionnaire de prixLes actions impliquent des calculs, des accs une base de donnes, consulter un service externe (appel tlphonique, etc.)Souvent client d'autres Beans3 types de Session BeanBean sans tat (stateless)Pour traiter les requtes de plusieurs clients, sans garder un tat entre les diffrentes requtesExemple : obtenir la liste de tous les produitsBean avec tat (stateful)Pour tenir une conversation avec un seul client,en gardant un tat entre les requtesExemple : remplir le caddy dun client avant de lancer la commande (le caddy est rempli en cliquant sur les diffrentes pages des produits)3 types de Session BeanBean singletonGarantie de navoir quune seule instance du bean dans tout le serveur dapplicationSupporte les accs concurrents (configurable)Exemple : bean qui cache une liste de pays, utilis par les classes de lapplication pour viter dinterroger la BDMessage-Driven BeanIntroduits partir de la norme EJB 2.0 (aujourdhui en 3.0)Similaire aux Session beans : reprsentent des verbes ou des actions,On les invoque en leur envoyant des messages, souvent dune autre applicationEx : message pour dclencher des transactions boursires, des autorisations d'achat par CBSouvent clients d'autres beansEntitLes applications Java EE utilisent aussi des entitsUne entit est une classe qui reprsente des donnes enregistres dans une base de donnesCorrespond un nomEx : personne, produit, compte bancaireUniquement BD relationnelle.26/02/201211Clients interagissant avec un serveur base d'EJBs

Objets distribusApplication distribueUne application Java EE peut tre distribue sur plusieurs machines du rseauLes containers grent les appels distants pour le dveloppeur (utilisent RMI-IIOP)Les objets distribus RMI-IIOP15InternetRMI/IIOPMachine clientIIOP RuntimeJVMstubClientMachine serveurIIOP RuntimeJVMtieServeur= Objet distribu~~RemoteInterfaceRemoteInterfaceLes objets distribus et le middlewareLorsqu'une application devient importante, des besoins rcurrents apparaissent : scurit, transactions,etcC'est l qu'intervient le middleware!Deux approchesMiddleware explicite,Middleware implicite17Les objets distribus Middleware expliciteInternetRMI/IIOPMachine clientIIOP RuntimeJVMstubClientMachine serveurIIOP RuntimeJVMtieServeur= Objet distribu~~Service TransactionService ScuritDriverBase de donnesAPI transactionAPIscuritAPI Base de donnesRemoteInterfaceRemoteInterfaceLes objets distribus Middleware explicite18InternetRMI/IIOPMachine clientIIOP RuntimeJVMstubClientMachine serveurIIOP RuntimeJVMtieServeur= Objet distribu~~Service TransactionService ScuritDriverBase de donnesAPI transactionAPIscuritAPI Base de donnesRemoteInterfaceRemoteInterfaceExemple : transfert d'un compte bancaire vers un autre : transfert(Compte c1, Compte c2, long montant)Appeler l'API de scurit qui fait une vrification de scurit,Appeler l'API de transaction pour dmarrer une transaction,Appeler l'API de SGBD pour lire des lignes dans des tables d'une BD,Faire le calcul : enlever de l'argent d'un compte pour le mettre dans l'autreAppeler l'API de SGBD pour mettre jour les lignes dans les tables,Appeler l'API de transaction pour terminer la transaction.Les objets distribus Middleware explicite19InternetRMI/IIOPMachine clientIIOP RuntimeJVMstubClientMachine serveurIIOP RuntimeJVMtieServeur= Objet distribu~~Service TransactionService ScuritDriverBase de donnesAPI transactionAPIscuritAPI Base de donnesRemoteInterfaceRemoteInterfaceExemple : transfert d'un compte bancaire vers un autre : transfert(Compte c1, Compte c2, long montant)Appeler l'API de scurit qui fait une vrification de scurit,Appeler l'API de transaction pour dmarrer une transaction,Appeler l'API de SGBD pour lire des lignes dans des tables d'une BD,Faire le calcul : enlever de l'argent d'un compte pour le mettre dans l'autreAppeler l'API de SGBD pour mettre jour les lignes dans les tables,Appeler l'API de transaction pour terminer la transaction.Difficile crireDifficile maintenirCode dpendant des API du vendeur de middlewareLes objets distribus Middleware implicite20InternetRMI/IIOPMachine clientIIOP RuntimeJVMstubClientMachine serveurIIOP RuntimeJVMtieServeur= Objet distribu~~Service TransactionService ScuritDriverBase de donnesAPI transactionAPIscuritAPI Base de donnesRemoteInterfaceIntercepteur de requteRemoteInterfaceRemoteInterfaceLes objets distribus Middleware implicite21InternetRMI/IIOPMachine clientIIOP RuntimeJVMstubClientMachine serveurIIOP RuntimeJVMtieServeur= Objet distribu~~Service TransactionService ScuritDriverBase de donnesAPI transactionAPIscuritAPI Base de donnesRemoteInterfaceIntercepteur de requteRemoteInterfaceRemoteInterfaceLes besoins sont dcrits dans un fichier descripteurLintercepteur de requtesait quoi faireLes EJB : des objets distribus RMI-IIOP au cur des EJBs22InternetRMI/IIOPMachine clientIIOP RuntimeJVMstubClientMachine serveurIIOP RuntimeJVMtieEJB~~Service TransactionService ScuritDriverBase de donnesAPI transactionAPIscuritAPI Base de donnesRemoteInterfaceRemoteInterfaceConteneur dEJBintercepteurEJBmiddleware implicite mais API pour descendre au bas niveau, ExpliciteLa plupart du temps le dveloppeur demeure au niveau implicite,Mais il peut utiliser des APIs de J2EE pour contrler manuellement les transactions, la scurit, etc. (travail plus complexe)Un peu dimplmentation avec EJB 2.xEJB ObjectEJB 3.0 simplifie la tche du dveloppeur en cachant des dtails dimplmentationLtude de EJB 2.x permet de comprendre comment fonctionnent les EJBPour chaque EJB crit par le dveloppeur, le serveur dapplication cre un objet (EJB Object) qui contient le code qui va permettre au serveur dintercepter les appels de mthode de lEJB

Rle de lEJB ObjectLes clients n'invoquent jamais directement les mthodes de la classe du BeanLes appels de mthodes sont en fait envoys lEJB ObjectUne fois les traitements effectus pour les transactions, scurit,.. le container appelle les mthodes de la classe du beanConstitution d'un EJB : EJB ObjectQue se passe-t-il lors de l'interception ?Prise en compte des transactions,Scurit : le client est-il autoris ?Gestion des ressources + cycle de vie des composants : threads, sockets, connexions DB, pooling des instances (mmoire),Persistance,Accs distant aux objets,Threading des clients en attente,Clustering,Monitoring : statistiques, graphiques temps rel du comportement du systme

Constitution d'un EJB : EJB ObjectContainer = couche d'indirection entre le client et le beanCette couche est matrialise par un objet unique : l'EJB ObjectEJB ServerEJB ContainerEJ BeanEJ BeanContainer EJBServeur EJBCode simpleGnration du code partir du BeanLe code gnr fournit Transactions, Securit, Persistance, Accs Distant, gestion des ressources, etc.Fournit les services au containerEJB : classe du Bean et EJB Object26/02/201228Serveur EJBContainer EJBEJ BeanEJ BeanContainer EJBUtilisation du descripteur de dploiement (fourni par l'auteur du Bean) Paramtres de dploiement = securit, mappings objets/BD relationelle, etc.)Gnration du code pour intgrer le bean dans le container, ajout du plumbing (persistance, securit, etc)Code gnrEJB Object : gnration du codeLes interfacesInterfacesPour chaque EJB session, le dveloppeur doit fournir une (ou 2) interface qui indique les mthodes de lEJB que les clients de lEJB pourront appelerLes autres mthodes de lEJB servent au bon fonctionnement de lEJBUn EJB session peut avoir une interface locale et une interface distanteInterface localeSi lEJB na quune seule interface locale, il ne peut tre utilis que par les classes qui sont dans le mme containerLe dveloppeur peut ne fournir aucune interface ; en ce cas, une interface locale est automatiquement cre, qui contient toutes les mthodes publiques de lEJBInterface distanteIndispensable si lEJB peut tre utilis par des classes qui ne sont pas dans le mme container (application distribue)Pour manipuler un EJB travers une interface locale, le serveur dapplication utilisera RMI-IIOP, ce qui impliquedes performances moins bonnesles paramtres et les valeurs de retour sont transmis par recopie des valeurs (rfrences pour un appel local)Avec les interfaces distantesProblme : la cration de bean et l'appel de mthode distante cotent cher !

Avec les interfaces distantesCommentaires sur la figure prcdenteLe client appelle un stub (souche),Le stub encode les paramtres dans un format capable de voyager sur le rseau,Le stub ouvre une connexion sur le skeleton (squelette),Le skeleton dcode les paramtres,Le skeleton appelle l'EJB Object,L'EJB Object effectue les appels middleware,L'EJB Object appelle la mthode du bean,Le Bean fait son travail,On fait le chemin inverse pour retourner la valeur de retour vers le client ! Sans compter le chargement dynamique des classes ncessaires !ConclusionFavoriser les interfaces localesNe jamais utiliser dinterfaces distantes si les EJBs et leurs clients sont dans le mme containerPackagingDescripteur de dploiement standardPour informer le container des besoins middleware, on utilise un descripteur de dploiement (XML)Standardis,A l'extrieur de l'implmentation du bean.Attention si on les crit la main !Outils d'aide au dploiement : IDEsDescripteurs peuvent tre modifis aprs le dploiement sans devoir recompilerapplication.xml, web.xml, ejb-jar.xml, faces-config.xmlapplication.xml : fichier EARweb.xml : fichier WARejb-jar.xml : fichier jar qui contient des EJBfaces-config.xml : configuration de JSF26/02/201238Descripteur de dploiement spcifiqueDescripteurs spcifiques au serveur d'applicationChaque vendeur ajoute des trucs en plus : load-balancing, persistance complexe, clustering, monitoringDans des fichiers spcifiques (glassfish-resource.xml, glassfish-web.xml ou glassfish-application.xml avec GlassFish) Format de distribution des applicationsLes applications Java EE sont distribues avec des fichiers jar (format zip)Le fichier jar contient les interfaces et classes Java, les fichiers de configuration et les ressources utilises par lapplication (images, sons,)Types de fichiers darchiveJar (Java ARchive) : fichier darchive habituel qui contient des EJB, des classes Java ordinaires et les ressources associesWar (Web ARchive) : fichier darchive pour le Web, qui contient des servlets, des fichiers HTML, des pages JSF, des EJB et les ressources associesEar (Entreprise ARchive) : runissent des modules jar ou warFichier earLes applications Web peuvent ne contenir quun seul fichier warLes applications plus complexes, par exemple qui utilisent des MDB, contiennent plusieurs fichiers jar qui sont runis en un seul fichier ear (format jar avec une structure particulire qui permet de contenir plusieurs fichiers jar)Service Oriented ArchitectureSOA (Service Oriented Architecture)SOA = un paradigme de conception pour lequel une application est compose de services faiblement coupls qui peuvent tourner sur des cpu diffrents et qui sont facilement localisablesService = composant de lapplication qui remplit une fonctionnalit bien dfinie, avec une interface bien dfinieUn service ne dpend pas dun contexte externeEJB et SOA (Service Oriented Architecture)Web Service = un exemple de SOA, adapt au WebExemple : Google fournit de nombreux services Web tels que Google Map ou Google CalendarPlusieurs spcifications de Java EE permettent de crer facilement des services Web partir des EJB (en particulier JAX-WS et JAXB)Pas tudi dans ce cours.26/02/201245

Recommended

View more >