EJB Enterprise Java Bean Xavier BLANC LIP 6
EJB Enterprise Java Bean ™ Xavier BLANC LIP 6 Laboratoire informatique de Paris 6 Xavier. Blanc@lip 6. fr Enterprise Java Bean X. Blanc
Plan • Vers les composants • Les Beans (précurseur) • Les Enterprise Java Beans – – – Bases Architecture Sécurité Transaction Déploiement • Conclusion Enterprise Java Bean X. Blanc
Vers les composants Des procédures aux composants Enterprise Java Bean X. Blanc
Enterprise Java Bean • 1980 paradigme procédural • 1990 paradigme objet • 2000 paradigme composant COMPLEXITE De l’application SIMPLICITE D’utilisation Historique Logiciel X. Blanc
Qu’est ce qu’un Composant ? Enterprise Java Bean X. Blanc
Vers les composants Les avantages des composants: – Réutilisables (code, architecture, source) – Evolution de l’application – Portabilité – Administration de l’application – Tolérance aux pannes Enterprise Java Bean X. Blanc
Vers les composants Désavantages des composants: – Manque de plate-forme, de standard (trop ? ) – Manque de maturité – Manque de contrôle – Composants liés, gros composant Enterprise Java Bean X. Blanc
Client / Serveur Client Serveur Données • Centralisation / Répartition des données • Centralisation / Répartition des traitements ARCHITECTURE Enterprise Java Bean X. Blanc
Le modèle 3 tiers Client Enterprise Java Bean Serveur Données X. Blanc
Le multi-tiers Client Enterprise Java Bean Serveur Données X. Blanc
Qu’est ce qu’un composant • Entité indépendante(d’une autre) • Formatée selon un certain Style • Une application est un assemblage de composants (plate-forme) Enterprise Java Bean X. Blanc
Les Beans ~ Client Bean Les précurseurs Enterprise Java Bean X. Blanc
Définition • Les Java Beans ont été les premiers composant java. Ils posent les concepts du paradigme composant selon Java. • A java bean is a reusable software component that can be manipulated visualy in a builder tool. • Un java Bean peut être graphique. Enterprise Java Bean X. Blanc
Cycle de vie • Write-once run anywhere – Outil de developpement – Application ÞDesign Time ÞRun Time Enterprise Java Bean X. Blanc
Sémantique • Essentiellement Graphique – Client • Cependant, il existe des Beans « invisibles » – Serveur – Pas ou peu existant Enterprise Java Bean X. Blanc
Utilisations Java Bean J D B C Data. Base Protocol IIOP RMI Data Serveur Corba Serveur Java Bean Enterprise Java Bean X. Blanc
Caractèristiques • Les Beans doivent supporter les fonctions suivantes: – Introspection – Customization – Events – Properties – Persistence Enterprise Java Bean X. Blanc
Introspection / Customization • • Arranger/ Déployer Notion de règles d’écriture Notion de reflection Notion de Bean Info Enterprise Java Bean X. Blanc
Event • Les événements Java sont spécifiés dans Java Beans • Les Java Beans communiquent par événement • Notion du listener • Notion de l’adapteur Enterprise Java Bean X. Blanc
Properties / Persistence • • Stockage des Beans sur un support physique Notion de Serializable Stockage de l’état courant Possibilité de rendre des attributs non sauvegardables Enterprise Java Bean X. Blanc
Conclusions • Prototype (Java en construction) – Event – Serializable – Introspection • Cycle de vie en 2 phases • Notion de plate-forme d’acceuil => Les Swings sont des Java Beans Enterprise Java Bean X. Blanc
Enterprise Java Bean Du coté du serveur Enterprise Java Bean X. Blanc
Définitions Enterprise Java. Bean is an architecture for component based distributed computing Enterprise Beans are components of distributed transaction-oriented enterprise applications Enterprise Java Bean X. Blanc
Généralitées • Standard proposé par Sun (et IBM) • Standard de composant pour les applications réparties • Simples d’utilisation, indépendant des couches transaction et sécurité (plate-forme) • « Write Once, Run Anywhere » • Compatible avec les API Java • Compatible avec les autres plate-forme (CORBA) Enterprise Java Bean X. Blanc
Exemple d’utilisation Java. Beans client Java IDL client IIOP Enterprise Java. Beans EJB Serveur IIOP CORBA client Enterprise Java Bean X. Blanc
Cycle de Vie • Un bean est construit puis packagé • Un bean peut être arrangé lors du déploiement • Un bean est déployé dans un EJB serveur • Une instance de bean est créée et gérée par un container • Les accès au Bean sont interceptés par le container Enterprise Java Bean X. Blanc
Types d’utilisateurs • • • EJB server provider EJB container provider Bean provider Application assembler Deployer System administrator Enterprise Java Bean EJB Architecture Application Administration X. Blanc
Vue Générale Client-view Enterprise bean instances component contract Container EJB Server deployment descriptor Enterprise Java Bean X. Blanc
Client-view • Identité de 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 … • Invocation de Méthodes – Le container permet aux clients d’invoquer les méthodes du composants Enterprise Java Bean X. Blanc
Component contract • Un bean doit toujours fournir une vue de son état. Le container doit pouvoir l’interroger. • Un container doit passer un contexte aux beans. Ce contexte permet aux beans d’avoir des informations sur le container et sur les clients. • Un container doit gérer un ensemble de propriétés pour les beans (environement, transactions, sécurité, …) Enterprise Java Bean X. Blanc
Deployment descriptor • 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) Enterprise Java Bean X. Blanc
Développement d’un Bean 1. Création des classes du Bean. (Business, home, remote) 2. Arrangement du Bean. (Transaction, Sécurité, …) 3. Déploiement du Bean. 4. Exécution du Bean. Enterprise Java Bean X. Blanc
Session Bean • • • Obligatoire dans EJB 1. 0 S’exécute au nom d’un client Peut être transactionnel Relativement de courte durée de vie N’est pas persistant Enterprise Java Bean X. Blanc
Entity Bean • Obligatoire dans EJB 1. 1 • Représente une entité existante et stocké de façon persistante • Est transactionnel • Peut être partagé entre plusieurs client • Persistant Enterprise Java Bean X. Blanc
Architecture Session et Entity Enterprise Java Bean X. Blanc
Vue client Session Bean • Un client accède à un Bean à travers sa Remote Interface • Un EJBObject implante la Remote Interface • Un EJBObject existe dans un container • Un EJBObject a une identité • Un EJBObject n’est pas persistant • Plusieurs EJBObject peuvent exister dans un même container Enterprise Java Bean X. Blanc
Vue client Session Bean • La création d’un EJBObject se fait par l’intermédiaire de la Home Interface • Le container exporte la référence de la Home Interface grâce à JNDI • La Home Interface permet de créer, supprimer les EJBObject Enterprise Java Bean X. Blanc
Vue Client Session Bean EJBObject Client EJB Home EJB 1 EJBObject EJB Home Enterprise Java Bean EJB 2 X. Blanc
Vue Client d’un Session Bean • Le client trouve la Home Interface (JNDI) • Le client fait un Create() sur la Home Interface et obtient une référence sur un EJBObject • Le client fait ensuite des appels sur l’EJBObject qui transmet au bean Enterprise Java Bean X. Blanc
Contrat du container Une instance de Session Bean représente une session entre le client et l’application. • 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. • La vie de l’instance de Session Bean correspond à la vie du client. Enterprise Java Bean X. Blanc
Contrat du Container 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 passivate appelée lors du transfert du bean sur un autre support. – Une fonction activate appelée lors du transfert du bean vers le container. Enterprise Java Bean X. Blanc
Contrat du container Une Session Bean peut être de deux types: • STATEFULL: Le bean sait dans quel état il se trouve. Il sait quelles sont les méthodes qu’il a effectué. • STATELESS: Le bean ne sait pas dans quel état il est. Il ne sait pas quelles méthodes ont été appelées. Enterprise Java Bean X. Blanc
Création d’une Instance de Session Bean Statefull Client EJB Home EJB Object Context Instance Create(args) new new set. Session. Context() ejb. Create(args) Enterprise Java Bean X. Blanc
Création d’une Instance de Session Bean Stateless (1/2) Client EJB Home EJB Object Context Instance Create() new Enterprise Java Bean X. Blanc
Création d’une Instance de Session Bean Stateless (2/2) Container Context Instance new set. Session. Context() ejb. Create() Enterprise Java Bean X. Blanc
The Bean Provider Le constructeur de Bean doit fournir la classe du Bean. – Elle doit implanter javax. ejb. Session. Bean. – Elle doit être public et pas abstract. – Elle doit implanter les méthodes ejb. Create(). Celles-ci doivent être public, retourner void, conforme RMI, renvoyer l’exception javax. ejb. Create. Exception. Chacune des méthodes ejb. Create() doit avoir une méthode create() équivalente dans la home interface – Elle possède des méthodes business. Public et conforme à RMI. Enterprise Java Bean X. Blanc
The Bean Provider La remote interface du bean: – hériter de javax. ejb. EJBObject – Conforme aux interfaces RMI – Signatures des méthodes de business de la classe du bean Enterprise Java Bean X. Blanc
The Bean Provider La Home interface du bean: – Hériter de javax. ejb. EJBHome – Conforme aux interfaces RMI – Pour chaque méthode ejb. Create() de la classe du bean il faut une interface create() – Ces méthodes doivent retourner l’exception javax. ejb. Create. Exception Enterprise Java Bean X. Blanc
Généralités Entity • Quasiment équivalent que pour Session – Remote & Home interface • Entity bean sont persistant – Lien avec un support de stockage • Durée de vie infini Enterprise Java Bean X. Blanc
Architecture EJBObject Client EJB Home EJB 1 EJBObject EJB Home Enterprise Java Bean EJB 2 X. Blanc
Home interface • Créer un nouveau EJBObject (idem que Session) • Supprimer un EJBObject() • Recher un EJBObject existant. La Home interface propose un ensemble de méthode find() Enterprise Java Bean X. Blanc
Vie d’un Entity Bean does not exist and not referenced release reference home. create(. . ) direct insert direct delete or home. remove(…) exist and not referenced Enterprise Java Bean home. find(…) does not exist and referenced object. remove() or home. remove(…) or direct remove exists and referenced release reference X. Blanc
Persistance Serveur / Bean • Persistance Serveur. Le container stocke le bean sur un support physique lors des appels aux méthodes ejb. Create(), ejb. Remove(), ejb. Load(), … • Le Bean peut gérer lui-même la persistance Enterprise Java Bean X. Blanc
Accès partagés Un entity bean est accessible de manière concurrente par des clients, c’est au serveur de gérer ces accès concurrents. Pour cela, deux stratégies sont proposées – De faire une copie de chaque entity bean pour chacune de transactions concurrentes. Ainsi la gestion de la concurrence est déléguée à la base de donnée sur laquelle seront faite les modifications. – De géré la concurrence à l’aide de verrou sur les entity bean Enterprise Java Bean X. Blanc
Bean Provider Quasiment identique pour Session • La classe du bean hérite de java. ejb. Entity. Bean • La Home interface • La Remote interface Enterprise Java Bean X. Blanc
Descripteur & ejb-jar • Les constructeurs de Bean proposent leurs beans aux constructeurs d’applications – Archive ejb-jar (enterprise-beans) • Les constructeurs d’applications passent les applications pour qu’elles soient déployées – Archive ejb-jar (assembly-descriptor) Enterprise Java Bean X. Blanc
Bean Provider • Home, Remote et Bean • Autres classe • Descripteur de bean : ejb-jar. xml – Nom du Bean – Nom des classes (Home, Remote et Bean) – Type du Bean (Session / Entity) – Environnement –… Enterprise Java Bean X. Blanc
Application Assembler • Tous les Beans • Descripteur d’application : ejb-jar. xml – Noms des beans – Environnement – Liens entre les beans – Security – Transaction Enterprise Java Bean X. Blanc
Sécurité Enterprise Java Bean X. Blanc
La Sécurité dans EJB L’architecture de l’Entreprise 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 à l’API de sécurité de Java (java. security) pour gérer localement la sécurité. – Une description aux niveau de l’archive (XML) pour que le serveur gère la sécurité. Enterprise Java Bean X. Blanc
La Sécurité dans EJB L’architecture Entreprise Java Bean utilise le package de sécurité du langage Java : java. security. Le package n’est 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. Enterprise Java Bean X. Blanc
La Sécurité locale Un bean a accès aux informations du serveur via son contexte. Celui-ci offre donc deux fonctions pour permettre à un bean d’obtenir l’identité d’un client. – get. Caller. Principal() – Is. Caller. In. Role(String role_name) Enterprise Java Bean X. Blanc
Sécurité par le Container • Il est possible de spécifier des règles d’accès pour chacune des méthodes. • Ceci se fait par l’intermédiaire du descripteur XML – Description de rôles – Description des règles de sécurités Enterprise Java Bean X. Blanc
Déclaration XML de rôle <security-role> <description> blabla </description> <role-name> employe </role-name> </security-role> … Enterprise Java Bean X. Blanc
Déclaration XML de règles <method-permission> <role-name> employe </role-name> <method> <ejb-name> Employe. Serv </ejb-name> <method-name>*</method-name> </method-permission> Enterprise Java Bean X. Blanc
Les transactions Enterprise Java Bean X. Blanc
Les transactions dans EJB Le support des transactions réparties est une caractéristique principale de l’architecture EJB. Les entity bean et les session bean statefull peuvent être transactionnel. Les aspects transactionnels sont soit gérés par le serveur EJB soit par le bean lui même. La gestion par le serveur EJB est totalement transparent. Enterprise Java Bean X. Blanc
gérée par le Bean • Utilisation de javax. transaction. User. Transaction • Programmation classique – Commit – Roll. Back –… Enterprise Java Bean X. Blanc
gérée par le Serveur • Spécification des caractéristiques transactionnelles dans le descripteur XML • javax. ejb. Session. Synchronization • Javax. ejb. EJBContext. – set. Rollback. Only() – get. Rollback. Only() Enterprise Java Bean X. Blanc
Descripteur XML • Cinq aspects transactionnel – Not. Supported – Required – Supports – Requires. New – Mandatory – Never Enterprise Java Bean X. Blanc
Descripteur XML <container-transaction> <method> <ejb-name> Employe. Record </ejb-name> <method-name>*</method-name> </method> <trans-attribute> Required </trans-attribute> </container-transaction> Enterprise Java Bean X. Blanc
Conclusion Et les autres plate-forme Enterprise Java Bean X. Blanc
Exemple de Bean Classe du Bean public class Example. Bean implementjavax. ejb. Session. Bean{ int solde; public void credit(int val) { solde +=val; } public void debit(int val) { solde -=val; } public int solde() { return solde; } public ejb. Create(int val) { solde = val; } Enterprise Java Bean X. Blanc
Exemple de Bean javax. ejb. Sessioncontext ctx; public void ejb. Activate() { } public void ejb. Passivate() { } public void ejb. Remove() { } public set. Session. Context(javax. ejb. Session. Context ctx) this. ctx = ctx; } public example. Bean() { } } Enterprise Java Bean X. Blanc
Exemple de Bean Home Interface public interface Example. Home extends javax. ejb. EJBHome { Javax. ejb. EJBObject create(int val) throws java. rmi. Remote. Exception } Enterprise Java Bean X. Blanc
Exemple de Bean Remote Interface Public interface example. Remote extends javax. ejb. EJBObject { public void credit(int val) throws java. rmi. Remote. Exception; public void debit(int val) throws java. rmi. remote. Exception; public int solde() throws java. rmi. Remote. Exception; } Enterprise Java Bean X. Blanc
EJB 1. 1 • • • Composant orientés Serveur Un seul type de communication Domaine d’application restreint Beaucoup plus stable que EJB 1. 0 Ouverture vers CORBA Nombreuses plate-forme – BEA Web. Logic, Bull. Soft, IONA, Inprise Enterprise Java Bean X. Blanc
Et le futur ? • Qu’est ce qu’un composant ? • CCM Corba Composant Model • DCOM Enterprise Java Bean X. Blanc
- Slides: 78