Aucun titre de diapositive

publicité
EJB
Enterprise Java Bean ™
Xavier BLANC
LIP6
Laboratoire informatique de Paris 6
[email protected]
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
Serveur
Données
Enterprise Java Bean
X. Blanc
Le multi-tiers
Client
Serveur
Données
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)
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
Java Bean
DataBase
Protocol
IIOP
RMI
Data Serveur
Corba Serveur
Java 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 JavaBean 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
JavaBeans
client
Java IDL
client
IIOP
IIOP
Enterprise
JavaBeans
EJB
Serveur
IIOP
Enterprise
JavaBeans
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
Client
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
Create(args)
EJB Object
Context
Instance
new
new
new
setSessionContext()
ejbCreate(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
new
setSessionContext()
ejbCreate()
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.
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 ejbCreate() de la classe
du bean il faut une interface create()
– Ces méthodes doivent retourner l’exception
javax.ejb.CreateException
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()
• Rechercher 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(…)
home.find(…)
exist and not
referenced
does not exist
and referenced
object.remove() or
home.remove(…)
or direct remove
exists and
referenced
release reference
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
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 que pour Session
• La classe du bean hérite de
java.ejb.EntityBean
• 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.
– getCallerPrincipal()
– IsCallerInRole(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>
EmployeServ
</ejb-name>
<method-name>*</method-name>
</method>
</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.UserTransaction
• Programmation classique
– Commit
– RollBack
–…
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()
Enterprise Java Bean
X. Blanc
Descripteur XML
• Cinq aspects transactionnel
–
–
–
–
–
–
NotSupported
Required
Supports
RequiresNew
Mandatory
Never
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>
Enterprise Java Bean
X. Blanc
Conclusion
Et les autres plate-forme
Enterprise Java Bean
X. Blanc
Exemple de Bean
Classe du Bean
public 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;
}
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() {
}
}
Enterprise Java Bean
X. Blanc
Exemple de Bean
Home Interface
public interface ExampleHome extends javax.ejb.EJBHome {
Javax.ejb.EJBObject create(int val) throws java.rmi.RemoteException
}
Enterprise Java Bean
X. Blanc
Exemple de Bean
Remote Interface
Public 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;
}
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
Enterprise Java Bean
X. Blanc
Et le futur ?
• Qu’est ce qu’un composant ?
• CCM Corba Composant Model
• DCOM
Enterprise Java Bean
X. Blanc
Téléchargement