78
Enterprise Java Bean X. Blanc Enterprise Java Enterprise Java Bean ™ Bean ™ EJB EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 [email protected]

Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 [email protected]

Embed Size (px)

Citation preview

Page 1: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Enterprise Java Bean ™Enterprise Java Bean ™

EJBEJB

Xavier BLANCLIP6

Laboratoire informatique de Paris [email protected]

Page 2: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.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

Page 3: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Vers les composants

Des procédures aux composants

Page 4: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Historique Logiciel

• 1980 paradigme procédural

• 1990 paradigme objet

• 2000 paradigme composant

CO

MP

LE

XIT

ED

e l’applicationSIM

PL

ICIT

ED

’uti

lisa

tion

Page 5: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Qu’est ce qu’un Composant

?

Page 6: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 7: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 8: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Client / Serveur

Client ServeurDonnées

• Centralisation / Répartition des données

• Centralisation / Répartition des traitements

ARCHITECTUREARCHITECTURE

Page 9: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Le modèle 3 tiers

Client ServeurDonnées

Page 10: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Le multi-tiers

Client ServeurDonnées

Page 11: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean 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)

Page 12: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Les Beans ~ Client Bean

Les précurseurs

Page 13: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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.

Page 14: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Cycle de vie

• Write-once run anywhere– Outil de developpement– Application

Design TimeRun Time

Page 15: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Sémantique

• Essentiellement Graphique– Client

• Cependant, il existe des Beans « invisibles »– Serveur– Pas ou peu existant

Page 16: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Utilisations

Java Bean

Java Bean

Java Bean

Data Serveur

Corba Serveur

Java Serveur

J DBC

DataBase Protocol

IIOP

RMI

Page 17: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Caractèristiques

• Les Beans doivent supporter les fonctions suivantes:– Introspection– Customization– Events– Properties– Persistence

Page 18: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Introspection / Customization

• Arranger/ Déployer

• Notion de règles d’écriture

• Notion de reflection

• Notion de Bean Info

Page 19: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 20: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 21: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 22: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Enterprise Java Bean

Du coté du serveur

Page 23: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Définitions

Enterprise JavaBean is an architecture for component based distributed computing

Enterprise Beans are components of distributed transaction-oriented enterprise applications

Page 24: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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)

Page 25: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Exemple d’utilisation

JavaBeansclient

Java IDLclient

CORBAclient

EnterpriseJavaBeansEJBServeur

EnterpriseJavaBeansEJBServeur

IIOP

IIOP

IIOPIIOP

Page 26: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 27: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Types d’utilisateurs

• EJB server provider

• EJB container provider

• Bean provider

• Application assembler

• Deployer

• System administrator

EJB Architecture

Application

Administration

Page 28: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Vue Générale

Enterprise beaninstances

Container

componentcontract

EJB Server

Client

deployment descriptor

Client-view

Page 29: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 30: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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é, …)

Page 31: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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)

Page 32: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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.

Page 33: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 34: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 35: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Architecture

Session et Entity

Page 36: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 37: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 38: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Vue Client Session Bean

EJBObject

EJB Home EJB 1

EJBObject

EJB Home EJB 2

Client

Page 39: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean 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

Page 40: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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.

Page 41: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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.

Page 42: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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.

Page 43: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

new

setSessionContext()

ejbCreate(args)

Page 44: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Création d’une Instance de Session Bean Stateless (1/2)

Client EJB Home EJB Object Context InstanceCreate()

new

Page 45: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Création d’une Instance de Session Bean Stateless (2/2)

Container Context Instancenew

new

setSessionContext()

ejbCreate()

Page 46: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

The Bean Provider

Le constructeur de Bean doit fournir la classe du Bean.– Elle doit implanter javax.ejb.SessionBean.– Elle doit être public et pas abstract.– Elle doit implanter les méthodes ejbCreate(). Celles-ci

doivent être public, retourner void, conforme RMI, renvoyer l’exception javax.ejb.CreateException. Chacune des méthodes ejbCreate() doit avoir une méthode create() équivalente dans la home interface

– Elle possède des méthodes business. Public et conforme à RMI.

Page 47: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 48: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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 ejbCreate() de la classe

du bean il faut une interface create() – Ces méthodes doivent retourner l’exception

javax.ejb.CreateException

Page 49: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 50: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Architecture

EJBObject

EJB Home EJB 1

EJBObject

EJB Home EJB 2

Client

Page 51: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Home interface

• Créer un nouveau EJBObject (idem que Session)

• Supprimer un EJBObject()

• Rechercher un EJBObject existant. La Home interface propose un ensemble de méthode find()

Page 52: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Vie d’un Entity Bean

does not exist andnot referenced

does not exist and referenced

exist and notreferenced

exists andreferenced

home.create(..)

release reference

home.find(…)

direct delete orhome.remove(…)

release reference

directinsert

object.remove() orhome.remove(…)or direct remove

Page 53: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Persistance

Persistance Serveur / Bean

• Persistance Serveur. Le container stocke le bean sur un support physique lors des appels aux méthodes ejbCreate(), ejbRemove(), ejbLoad(), …

• Le Bean peut gérer lui-même la persistance

Page 54: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 55: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Bean Provider

Quasiment identique que pour Session

• La classe du bean hérite de java.ejb.EntityBean

• La Home interface

• La Remote interface

Page 56: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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)

Page 57: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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– …

Page 58: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 59: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Sécurité

Page 60: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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é.

Page 61: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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.

Page 62: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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.– getCallerPrincipal()– IsCallerInRole(String role_name)

Page 63: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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

Page 64: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Déclaration XML de rôle

<security-role><description> blabla </description><role-name> employe </role-name>

</security-role>…

Page 65: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Déclaration XML de règles

<method-permission><role-name> employe </role-name><method>

<ejb-name> EmployeServ

</ejb-name><method-name>*</method-name>

</method></method-permission>

Page 66: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Les transactions

Page 67: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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.

Page 68: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

gérée par le Bean

• Utilisation de javax.transaction.UserTransaction

• Programmation classique– Commit– RollBack– …

Page 69: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

gérée par le Serveur

• Spécification des caractéristiques transactionnelles dans le descripteur XML

• javax.ejb.SessionSynchronization

• Javax.ejb.EJBContext.– setRollbackOnly()– getRollbackOnly()

Page 70: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Descripteur XML

• Cinq aspects transactionnel– NotSupported– Required– Supports– RequiresNew– Mandatory– Never

Page 71: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Descripteur XML

<container-transaction><method>

<ejb-name> EmployeRecord</ejb-name><method-name>*</method-name>

</method><trans-attribute> Required </trans-

attribute></container-transaction>

Page 72: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Conclusion

Et les autres plate-forme

Page 73: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Exemple de Bean

Classe du Beanpublic class ExampleBean implementjavax.ejb.SessionBean{

int solde; public void credit(int val) {solde +=val; } public void debit(int val) {solde -=val; } public int solde() {return solde; } public ejbCreate(int val) {solde = val; }

Page 74: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Exemple de Bean

javax.ejb.Sessioncontext ctx;public void ejbActivate() {}public void ejbPassivate() {}public void ejbRemove() {}public setSessionContext(javax.ejb.SessionContext

ctx) this.ctx = ctx;

}public exampleBean() {}

}

Page 75: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Exemple de Bean

Home Interfacepublic interface ExampleHome extends javax.ejb.EJBHome {

Javax.ejb.EJBObject create(int val) throws java.rmi.RemoteException

}

Page 76: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Exemple de Bean

Remote InterfacePublic interface exampleRemote extends javax.ejb.EJBObject {

public void credit(int val) throws java.rmi.RemoteException;

public void debit(int val) throws java.rmi.remoteException;

public int solde() throws java.rmi.RemoteException;

}

Page 77: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

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 WebLogic, BullSoft, IONA, Inprise

Page 78: Enterprise Java Bean X. Blanc Enterprise Java Bean Enterprise Java Bean EJB Xavier BLANC LIP6 Laboratoire informatique de Paris 6 Xavier.Blanc@lip6.fr

Enterprise Java Bean X. Blanc

Et le futur ?

• Qu’est ce qu’un composant ?

• CCM Corba Composant Model

• DCOM