Livrable 2.2

Transcription

Livrable 2.2
Spécification du profil UML d’assemblage cible EJB
(version 1)
Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)∗
Référence : Livrable 2.2
Date : 31 mai 2002
∗
: Les partenaires du projet ACCORD sont CNAM, EDF R&D, ENST, ENST-Bretagne, France Telecom
R&D, INRIA, LIFL et Softeam. Le projet est conjointement financé par les partenaires et par le RNTL
(Réseau National des Techniques Logicielles).
Projet RNTL ACCORD
Page 1
Table des matières
1
Description générale
2
Le standard EJB 2.0
2.1 Architecture générale . . . . . . . . . . . . . . .
2.2 Un nouveau type de Bean : Message Driven Bean
2.3 Localité du Bean . . . . . . . . . . . . . . . . .
2.4 Conteneur, serveur et descripteur de déploiement
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
4
5
5
Définition technique
3.1 Paquetage UML . . . . .
3.2 Stéréotypes . . . . . . .
3.2.1 Vue externe . . .
3.2.2 Vue interne . . .
3.3 Tagged Values . . . . . .
3.3.1 Vue externe . . .
3.3.2 Vue interne . . .
3.4 Contraintes structurelles
3.5 Méta-modèle virtuel . . .
3.5.1 Vue externe . . .
3.5.2 Vue interne . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
6
6
6
7
9
9
9
10
10
10
10
3
Bibliographie
Projet RNTL ACCORD
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
Page 2
Chapitre 1
Description générale
Le standard EJB propose une architecture de composants pour le développement et le déploiement d’applications réparties fondées sur des composants EJB appelés beans.
L’objectif de ce profil UML consiste à décrire des composants conformes au modèle de composants EJB
2.0 [SUN01]. Actuellement, il existe un profil standardisé [Gre01] basé sur la spécification EJB 1.1. Ce
profil est une extension d’UML 1.4.
Le profil que nous proposons dans ce document s’appuie sur le profil existant et introduit de nouvelles
extensions UML 1.4 (stéréotypes, tagged values) nécessaires pour prendre en compte les nouveautés de la
spécification 2.0 des EJB.
La spécification du profil suit les règles communes décrites dans [ACC02].
Projet RNTL ACCORD
Page 3
Chapitre 2
Le standard EJB 2.0
La version 2.0 des EJB spécifie un nouveau type de Bean : le Message Driven Bean et introduit la notion
de localité du Bean.
2.1 Architecture générale
La fabrique d’instance : pour que le client puisse accéder aux méthodes métier du bean, il doit tout d’abord
récupérer un accès au bean. Cela se fait par l’intermédiaire de la classe EJBHome, qui renvoie une référence
sur la classe EJBObject, représentant le bean correspondant ;
La délégation des requêtes : le client n’accède pas directement au bean. Ses requêtes doivent être envoyées
à l’interface du bean : la classe EJBObject qui délèguera la requête vers le bean.
Les trois classes Java (EJBHome, EJBObject et Bean) sont gérées par un conteneur (Container), correspondant à l’environnement d’exécution du bean.
Nous allons maintenant détailler les différentes catégories de bean ainsi que les autres éléments de l’architecture EJB : conteneur, serveur et descripteur de déploiement.
2.2 Un nouveau type de Bean : Message Driven Bean
Le standard EJB 1.1 définit trois types de bean se différentiant essentiellement par rapport à leur cycle de
vie :
– Session Bean : ce bean n’existe que pour une session demandée par le client. Deux types de bean session
existent : Stateless ou sans état : le bean ne maintient pas d’informations suite aux différentes requêtes qui
lui sont demandées. Le Conteneur peut alors partager séquentiellement le bean entre plusieurs clients ;
Statefull ou avec état : le bean conserve en mémoire l’état du client. Chaque instance du bean n’appartient
alors qu’à son client, et ne peut être partagée.
– Entity Bean : ce bean est une représentation de données persistantes ; il existe tant qu’il n’a pas été détruit
explicitement. Pour récupérer un bean entité, un client peut utiliser la clé primaire du bean donnée lors
de la création de ce dernier. L’accès au bean peut être partagé entre plusieurs clients.
Dans la version 2.0 des EJB apparaît le bean orienté message,
– Message-Driven Bean : ce bean est utilisé lorsque ses méthodes métiers doivent être asynchrones ; il
est invoqué sur réception d’un message du client, en utilisant le service JMS de Java (Java Messaging
Service).
Projet RNTL ACCORD
Page 4
2.3 Localité du Bean
La version 2.0 introduit également la notion de localité du bean. Cette notion ne s’applique pas aux beans
orientés messages, qui sont nécessairement distants.
Pour les beans Remote (issus des versions EJB 1.x), le client n’a pas besoin de connaître l’emplacement du
bean. L’accès se fait obligatoirement à l’aide de Java RMI.
Les beans Local sont par contre situés sur la même machine virtuelle que le client (un bean peut alors, à
l’intérieur d’un même Conteneur, faire appel à un autre bean).
Une conséquence fondamentale de la notion de localité concerne le passage de paramètres lors d’un appel
de méthode : pour les EJB Remote, le passage se fait par valeur tandis que, pour les EJB Local, le passage se
fait par référence, les arguments étant alors potentiellement partagés entre le client et le bean. La propriété
Local ou Remote du bean est choisie lors de la création du bean.
2.4 Conteneur, serveur et descripteur de déploiement
Le rôle principal du conteneur est de gérer les instances des différents beans. Suivant le cas, il prendra
en charge un pool d’instances (par exemple pour les beans sessions avec état). Le conteneur peut, de
plus, proposer différents services aux beans. Le bean s’exécute en fait dans un Contexte définissant les
différentes propriétés du client (son identité, les différents rôles qui lui sont attribués), et l’état des services
mis en œuvre.
L’infrastructure d’accueil des composants EJB comprend également une entité appelée « EJB server » ou serveur - qui représente le logiciel support des communications et des services techniques nécessaires
à l’exécution du composant et à son accès par le réseau. Les deux principaux services développés dans le
standard EJB 2.0 concernent la sécurité et les transactions. Un descripteur de déploiement est associé à un
composant et permet de décrire ses caractéristiques.
Projet RNTL ACCORD
Page 5
Chapitre 3
Définition technique
3.1 Paquetage UML
Le profil EJB 2.0 étend les paquetages UML 1.4 standards Core et Model Management. Les méta-classes
suivantes du paquetage Core ont été étendues :
– Class
– type
– Usage
– Operation
– Abstraction
– Association
– Attribute
De plus, la méta-classe Subsystem du paquetage Model Management a été étendue.
3.2 Stéréotypes
Nous avons conservé dans ce nouveau profil les deux vues interne et externe du profil EJB 1.1[Gre01], et
repris autant que possible les stéréotypes qui y sont définis. Nous indiquons dans les tableaux ci-dessous si
un nouveau stéréotype a été introduit pour couvrir de nouveaux concepts du modèle EJB 2.0[SUN01].
Le profil EJB 1.1 couvre le modèle d’implémentation des EJB (avec notamment le stéréotype «EJB-JAR»
pour l’archive EJB) et celui de Java (caractéristiques de Java comme les exceptions ou les interfaces). Le
lecteur se reportera à [Gre01] pour plus détails.
La spécification EJB 2.0 introduit la notion de localité du Bean : distante (remote) ou local. Par soucis de
compréhension, nous avons remplacé le terme object des stéréotypes du profil EJB 1.1[Gre01] . En particulier, dans la vue externe, le stéréotype «EJBRemoteInterface» a été renommé «EJBObjectInterface»
sa localité étant spécifiée par les tagged values Remote et Local. Ces modifications apparaissent dans
les tableaux ci-dessous.
3.2.1
Vue externe
La vue externe représente la vue du client.
Projet RNTL ACCORD
Page 6
Stéréotype
«EJBCreateMethod»
s’applique à
Operation
«EJBFinderMethod»
Operation
«EJBObjectMethod»
Operation
EJB 2.0
«EJBObjectInterface»
Class
EJB 2.0
«EJBMessageDestination»
Class
«EJBHomeInterface»
Class
«EJBSessionHomeInterface»
Class
«EJBEntityHomeInterface»
Class
«EJBPrimaryKey»
Usage
3.2.2
Définition
Indique que l’opération représente une méthode
EBJ create.
Indique que l’opération représente une méthode
EBJ Finder.
Spécialise «EJBHomeMethod». Indique que
l’opération représente une méthode EBJ Remote.
Spécialise le stéréotype UML «type». Indique
que la classe UML représente une interface EBJ
Object. Correspond dans le profil [?] à EJBRemoteInterface qui peut être Remote ou Local dans EJB 2.0
Spécialise le stéréotype UML «type». Indique
que la classe UML représente une interface EBJ
Message Driven.
Stéréotype abstrait qui spécialise le stéréotype
UML «type». Indique que la classe UML représente une interface EBJ Home.
Spécialise «EJBHomeInterface». Indique
que la classe UML représente l’interface EBJ
Home d’un Bean Session.
Spécialise «EJBHomeInterface». Indique
que la classe UML représente l’interface EBJ
Home d’un Bean Entity.
Définit la clé primaire associée à l’EJB Entity.
Vue interne
La vue interne représente la vue du conteneur. On y trouvera essentiellement les propriétés du bean.
Projet RNTL ACCORD
Page 7
EJB 2.0
EJB 2.0
EJB 2.0
EJB 2.0
Stéréotype
«EJBCmpField»
s’applique à
Attribute
«EJBPrimaryKeyField»
Attribute
«EJBRealizeHome»
«EJBRealizeObject»
Abstraction
Abstraction
«EJBRealizeDestination»
«EJBImplementation»
Abstraction
Class
«EJBEnterpriseBean»
Subsystem
«EJBSessionBean»
Subsystem
«EJBEntityBean»
Subsystem
«EJBMessageDrivenBean»
Subsystem
«EJBReference»
Association
«EJBAccess»
Association
«EJBOnMessage»
Operation
Projet RNTL ACCORD
Définition
Indique que l’attribut représente un champ géré
par le conteneur (pour un EJB Entity dont la persistance est gérée par le conteneur).
Spécialise «EJBCmpField». Indique que l’attribut est la clé primaire pour un EJB Entity dont la
persistance est gérée par le conteneur.
Définit le lien Bean-Home.
Définit le lien Bean-Remote. Correspond à EJBRealizeRemote dans le profil [?].
Définit le lien Bean-MessageDestination.
Spécialise
le
stéréotype
UML
«implementationClass». Indique que
la classe décrit l’implémentation du Bean.
Stéréotype abstrait qui indique que le soussystème représente un composant EJB.
Spécialise «EJBEnterpriseBean». Indique
que le sous-système représente un composant EJB
de type Session.
Spécialise «EJBEnterpriseBean». Indique
que le sous-système représente un composant EJB
de type Entity.
Spécialise «EJBEnterpriseBean». Indique
que le sous-système représente un composant EJB
de type Message Driven.
Indique que la partie finale d’une navigation dans
une association représente un composant EJB référencé.
Indique que l’association définit une relation
de rôle de sécurité entre un acteur et un
«EJBEnterpriseBean».
Indique que l’opération représente la méthode
onMessage d’un EJB Message Driven.
Page 8
3.3 Tagged Values
Nous avons repris autant que possible les tagged values définies dans [Gre01]. Nous indiquons dans les
tableaux ci-dessous toute modification et tout apport au profil [Gre01] pour le support des EJB 2.0.
3.3.1
Vue externe
Tagged Value
EJBSessionType
EJBLocalityType
EJB 2.0
3.3.2
s’applique à
Définition
Class
Indique le type de Bean Session : State«EJBSessionHomeInterface» full ou Stateless.
Class
Indique si le Bean est Local ou distant
«EJBSessionHomeInterface» (Remote).
«EJBSessionObjectInterface»
Vue interne
Tagged Value
EJBRoleNames
EJBTransAttribute
EJBEnvEntries
EJBNameInJAR
EJBReferences
EJBResources
EJBSecurityRoles
EJBTransType
EJB 2.0
EJBPersistenceType
EJBReentrant
EJBLocalityType
EJB 2.0
Projet RNTL ACCORD
s’applique à
Operation
Définition
Liste de rôles de sécurité pouvant invoquer
l’opération. Liste de chaine de caractères
(Strings) séparées par des virgules.
Operation
Définit la politique utilisée pour la transaction : énumération de Not Supported, Supports, Required, RequiresNew, Mandatory, Naver.
Subsystem
Interactions avec l’environnement : liste de
«EJBEnterpriseBean» triplets <nom, type, valeur>, séparés par des virgules.
Subsystem
Nom du composant EJB dans l’«EJB«EJBEnterpriseBean» JAR».
Subsystem
Autres composants EJB référencés par le
«EJBEnterpriseBean» composant courant : liste de quadruplets
<nom, type, home, remote>, séparés par des virgules.
Subsystem
Ressources utilisés par le composant
«EJBEnterpriseBean» EJB : liste de triplets <nom, type,
auth(entification ?)>, séparés par
des virgules.
Subsystem
Noms de rôles qui peuvent invoquer toutes
«EJBEnterpriseBean» les opérations du composant : liste de
couples <nom, lien(link)>, séparés
par des virgules.
Subsystem
Indique qui va gérer la transaction : Bean
«EJBSessionBean»
ou Container.
«EJBMessageDrivenBean»
Subsystem
Indique qui va gérer la persistance : Bean
«EJBEntityBean»
ou Container.
Subsystem
Valeur booléenne indiquant si le Bean est
«EJBEntityBean»
ré-entrant ou non.
Subsystem
Indique si le Bean est Local ou distant
«EJBEntityBean»
(Remote).
«EJBSessionBean»
Page 9
3.4 Contraintes structurelles
Les contraintes structurelles du profil [Gre01] ont été conservées.
Nous rajoutons les contraintes suivantes, portant sur la cohérence entre le modèle externe et le modèle
interne, pour les nouveaux stéréotypes et tagged values :
– Pour le bean concerné, EJBLocalityType doit avoir la même valeur entre le modèle externe et le
modèle interne ;
– Le stéréotype «EJBOnMessage» ne peut apparaître que dans un modèle représentant un bean MessageDriven. Soit le sous-système auquel la classe de l’opération appartient est stéréotypé «EJBMessageDrivenBean» ;
– Dans un sous-système stéréotypé «EJBMessageDrivenBean», la classe stéréotypée «EJBImplementation»
doit avoir les propriétés suivantes :
– elle est une abstraction stéréotypée «EJBRealizeDestination» de la classe stéréotypée
«EJBMessageDestination» ;
– ne comporte qu’une opération stéréotypée «EJBOnMessage».
3.5 Méta-modèle virtuel
3.5.1
Vue externe
Voir figure 3.1 page suivante.
3.5.2
Vue interne
Voir figure 3.2 page 12.
Projet RNTL ACCORD
Page 10
Class
(from Core)
<<baseElement>>
<<stereotype>>
type
(from Standard Elements)
<<stereotype>>
EJBMessageDestination
<<stereotype>>
EJBHomeInterface
<<TaggedValue>> EJBLocalityType : ( Local, Remote )
<<stereotype>>
EJBObjectInterface
<<TaggedValue>> EJBLocalityType : ( Local, Remote )
<<stereotype>>
EJBSessionHomeInterface
<<stereotype>>
EJBEntityHomeInterface
<<TaggedValue>> EJBSessionType : ( Stateful, Stateless )
Dependency
(from Core)
Operation
(from Core)
<<baseElement>>
<<baseElement>>
Usage
(from Core)
<<baseElement>>
<<stereotype>>
EJBFinderMethod
<<stereotype>>
EJBCreateMethod
<<stereotype>>
EJBObjectMethod
<<baseElement>>
<<stereotype>>
EJBPrimaryKey
F IG . 3.1 – Méta modèle virtuel : vue externe
Projet RNTL ACCORD
Page 11
<<stereotype>>
EJBEnterpriseBean
<<baseElement>>
<<TaggedValue>> EJBEnvEntries [0..*] : < name : String, type : String, value : String >
<<TaggedValue>> EJBNameInJAR : String
<<TaggedValue>> EJBReferences [0..*] : < name : String, type : String, home : String, remote : String >
<<TaggedValue>> EJBResources [0..*] : < name : String, type : String, auth : String >
<<TaggedValue>> EJBSecurityRoles [0..*] : < name : String, link : String >
Subsystem
(from Model Management)
<<stereotype>>
EJBEntityBean
<<stereotype>>
EJBSessionBean
<<TaggedValue>> EJBPersistenceType : ( Bean, Container )
<<TaggedValue>> EJBReentrant : Boolean
<<TaggedValue>> EJBLocalityType : ( Local, Remote )
<<TaggedValue>> EJBTransType : ( Bean, Container )
<<TaggedValue>> EJBLocalityType : ( Local, Remote )
<<stereotype>>
EJBMessageDrivenBean
<<TaggedValue>> EJBTransType : ( Bean, Container )
Class
(from Core)
Attribute
(from Core)
<<baseElement>>
<<baseElement>>
<<stereotype>>
implementationClass
(from Standard Elements)
Dependency
(from Core)
<<stereotype>>
EJBImplementation
Abstraction
(from Core)
<<baseElement>>
<<baseElement>>
<<stereotype>>
EJBRealizeDestination
<<stereotype>>
EJBCmpField
<<stereotype>>
EJBRealizeObject
Usage
(from Core)
<<baseElement>>
<<stereotype>>
EJBRealizeHome
<<baseElement>>
<<stereotype>>
EJBReference
Operation
(from Core)
<<baseElement>>
<<TaggedValue>>
<<stereotype>>
EJBPrimaryKeyField
Association
(from Core)
<<baseElement>>
<<stereotype>>
EJBonMessage
<<baseElement>>
<<stereotype>>
EJBAccess
EJBRoleNames [1..*] : String
EJBTransAttribute : ( NotSupported, Supports, Required )
RequiresNew, Mandatory, Never )
Projet RNTL ACCORD
F IG . 3.2 – Méta modèle virtuel : vue interne
Page 12
Bibliographie
[ACC02] ACCORD. Conventions communes aux profils UML. Technical report, Projet RNTL ACCORD,
Livrable 2.1, 2002.
[Gre01]
Jack Greenfield. UML profile for EJB. Technical report, Rational Software Corpotation, Mai
2001.
[SUN01] SUN. Enterprise JavaBeans Specification, Version 2.0. Sun Microsystems, Aout 2001.
Projet RNTL ACCORD
Page 13