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