Академический Документы
Профессиональный Документы
Культура Документы
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 Concepts avancs sur la persistance Relations avec les entits Gestion des transactions
Les EJB facilitent la cration d'applications distribues pour les entreprises. Soccupent du traitement mtier de lapplication Permettent aux dveloppeurs de se concentrer sur les traitements orients mtiers Sont rutilisables Sont assemblables
Composant serveur qui encapsule une logique mtier, qui peut tre dploy dans un serveur dapplication Compos de un ou plusieurs objets
Les appels aux mthodes par les clients de lEJB sont intercepts par le conteneur dEJB
Rle du conteneur
Cycle de vie du bean Injection de dpendance Accs au bean, communication distance Scurit daccs Accs concurrents Transactions,
2 Types dEJB
Session Bean
Modlise un traitement Reprsent par une classe Java et une interface qui expose certaines mthodes
Consomme des messages asynchrones envoys par des clients Permettent linterconnexion avec des systmes diffrents (non Java EE)
Session Bean
Pour traiter les requtes de plusieurs clients, sans garder un tat entre les diffrentes requtes Exemple : obtenir la liste de tous les produits
Pour tenir une conversation avec un seul client, en gardant un tat entre les requtes Exemple : remplir le caddy dun client avant de lancer la commande (le caddy est rempli en cliquant sur les diffrentes pages des produits)
Bean singleton
Garantie de navoir quune seule instance du bean dans tout le serveur dapplication Supporte les accs concurrents (configurable) Exemple : bean qui cache une liste de pays, utilis par les classes de lapplication pour viter dinterroger la BD
Message-Driven Bean
Introduits 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 application
Ex : message pour dclencher des transactions boursires, des autorisations d'achat par CB Souvent clients d'autres beans
Entit
Les applications Java EE utilisent aussi des entits Une entit est une classe qui reprsente des donnes enregistres dans une base de donnes Correspond un nom Ex : personne, produit, compte bancaire
Objets distribus
Application distribue
Une application Java EE peut tre distribue sur plusieurs machines du rseau Les containers grent les appels distants pour le dveloppeur (utilisent RMI-IIOP)
15
stub
~ ~
tie
RMI/IIOP
Internet
Lorsqu'une application devient importante, des besoins rcurrents apparaissent : scurit, transactions,etc C'est l qu'intervient le middleware!
Deux approches
1. 2.
17
API scurit
stub
~ ~
tie
RMI/IIOP
Internet
18
API scurit
stub
~ ~
tie
Exemple : transfert d'un compte bancaire vers un autre : IIOP Runtime IIOP montant) transfert(Compte c1, Compte c2, longRuntime
1.Appeler l'API de scurit qui fait une vrification de scurit, 2.Appeler l'API de transaction pour dmarrer une transaction, 3.Appeler l'API de SGBD pour lire des lignes dans des tables d'une BD, 4.Faire le calcul : enlever de l'argent d'un compte pour le mettre dans l'autre 5.Appeler l'API de SGBD pour mettre jour les lignes dans les tables, 6.Appeler l'API de transaction pour terminer la transaction.
JVM
JVM
RMI/IIOP
Internet
19
API scurit
stub
~ ~
tie
Exemple : transfert d'un compte bancaire vers un autre : Difficile crire IIOP Runtime IIOP montant) transfert(Compte c1, Compte c2, longRuntime 1.Appeler l'API de scurit qui fait une vrification de scurit, JVM Difficile maintenir JVM
2.Appeler l'API de transaction pour dmarrer une transaction, 3.Appeler l'API de SGBD pour lire des lignes dans des tables d'une BD, Code dpendant des API 4.Faire le calcul : enlever de l'argent d'un compte pour le mettre dans l'autre du vendeur de middleware 5.Appeler l'API de SGBD pour mettre jour les lignes dans les tables, 6.Appeler l'API de transaction pour terminer la transaction.
RMI/IIOP
Internet
20
Machine client
Machine serveur
Serveur
= Objet distribu
API transaction
Client
Remote Interface
API scurit
Intercepteur de requte
Remote Interface Remote Interface
API Base de donnes
stub
~ ~
tie
RMI/IIOP
Internet
21
Machine client
Machine serveur
Serveur
= Objet distribu
API transaction
Client
Remote Interface
API scurit
Intercepteur de requte
Remote Interface Remote Interface
API Base de donnes
stub
~ ~
tie
RMI/IIOP
Internet
IIOP Runtime JVMLes besoins sont dcrits dans un fichier descripteur Lintercepteur de requte sait quoi faire
22
Machine client
Machine serveur
API transaction
EJB
EJB
API scurit
Client
Conteneur dEJB intercepteur
Remote Interface Remote Interface
stub
~ ~
tie
middleware implicite IIOP Runtime IIOP Runtime mais API pour descendre au bas niveau, Explicite
JVM JVM La 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) Internet
RMI/IIOP
EJB Object
EJB 3.0 simplifie la tche du dveloppeur en cachant des dtails dimplmentation Ltude de EJB 2.x permet de comprendre comment fonctionnent les EJB
Pour 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
Les clients n'invoquent jamais directement les mthodes de la classe du Bean Les appels de mthodes sont en fait envoys lEJB Object
Une fois les traitements effectus pour les transactions, scurit,.. le container appelle les mthodes de la classe du bean
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
Container = couche d'indirection entre le client et le bean Cette couche est matrialise par un objet unique : l'EJB Object
EJB Server
Le code gnr fournit Transactions, Securit, Persistance, Accs Distant, gestion des ressources, etc.
EJB Container
EJ Bean
Serveur EJB
EJ Bean
Gnration du code pour intgrer le bean dans le container, ajout du plumbing (persistance, securit, etc)
EJ Bean
Code gnr
Les interfaces
Interfaces
Pour chaque EJB session, le dveloppeur doit fournir une (ou 2) interface qui indique les mthodes de lEJB que les clients de lEJB pourront appeler Les autres mthodes de lEJB servent au bon fonctionnement de lEJB Un EJB session peut avoir une interface locale et une interface distante
Interface locale
Si lEJB na quune seule interface locale, il ne peut tre utilis que par les classes qui sont dans le mme container Le dveloppeur peut ne fournir aucune interface ; en ce cas, une interface locale est automatiquement cre, qui contient toutes les mthodes publiques de lEJB
Interface distante
Indispensable 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 RMIIIOP, ce qui implique
des performances moins bonnes les paramtres et les valeurs de retour sont transmis par recopie des valeurs (rfrences pour un appel local)
5.
6. 7. 8. 9. 10.
Le 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 !
Conclusion
Ne jamais utiliser dinterfaces distantes si les EJBs et leurs clients sont dans le mme container
Packaging
Pour 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 : IDEs Descripteurs peuvent tre modifis aprs le dploiement sans devoir recompiler
Chaque vendeur ajoute des trucs en plus : loadbalancing, persistance complexe, clustering, monitoring Dans des fichiers spcifiques (glassfishresource.xml, glassfish-web.xml ou glassfishapplication.xml avec GlassFish)
Les 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,)
Jar (Java ARchive) : fichier darchive habituel qui contient des EJB, des classes Java ordinaires et les ressources associes War (Web ARchive) : fichier darchive pour le Web, qui contient des servlets, des fichiers HTML, des pages JSF, des EJB et les ressources associes Ear (Entreprise ARchive) : runissent des modules jar ou war
Fichier ear
Les applications Web peuvent ne contenir quun seul fichier war Les 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)
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 localisables Service = composant de lapplication qui remplit une fonctionnalit bien dfinie, avec une interface bien dfinie Un service ne dpend pas dun contexte externe
Web Service = un exemple de SOA, adapt au Web Exemple : Google fournit de nombreux services Web tels que Google Map ou Google Calendar Plusieurs spcifications de Java EE permettent de crer facilement des services Web partir des EJB (en particulier JAX-WS et JAXB)