Laboratoire informatique de Paris 6

Slides:



Advertisements
Présentations similaires
Cours 5 : XML et les architectures N-tier Janvier Version 1.0 -
Advertisements

Xavier Blanc Web Services Xavier Blanc
EJB 2.0 Enterprise Java Bean ™ Xavier BLANC
Introduction aux environnements répartis
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
Serveur jeu Le serveur fait partie d'un logiciel de jeu en ligne multi joueur en architecture client serveur. Il répond à des demandes.
Implémentation de la gestion de réseau dans Windows 2000 et plus
Object Management Architecture (OMA)
L’architecture .net et ASP.net
(Classes prédéfinies – API Java)
Les technologies XML Cours 3 : Les APIS XML Janvier Version 1.0 -
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Introduction aux Entity Beans
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance

Stéphane Frenot - Département Télécommunication - SID - II - EjbEnt 247 Entity EJB.
Stéphane Frenot - Département Télécommunication - SID - II - EjbServ 227 EJB Session.
Stéphane Frenot - Département Télécommunication - SID - II - EJBcli 211 Le client EJB.
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Session Module Java Expert.
UV J2EE Module Java Expert
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Borland JBuilder 7 Module WSAD.
Introduction aux Session Beans
Introduction aux services WEB
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
Architectures Web - N-Tiers
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
JAVASERVER FACES Un framework Java pour le développement Web.
Réalisée par :Samira RAHALI
Programmation Approche composants Ing5 SI
Laboratoire d'Informatique de l’Université de Franche-Comté
IFT1025, Programmation 2 Jian-Yun Nie
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Factory Design Patterns Factory Method
.Net Remoting.
GESTION DE PARCS D’ORDINATEURS
Interopérabilité JOnAS - CORBA
Gestion des bases de données
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction au paradigme orienté-objet (suite)
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Sensibilisation a la modelisation
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Patrons de conceptions de créations
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
L’architecture J2EE
Branche Développement Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire.
Les EJB Samir AZZOUZ Équipe ObjectWeb
Présentation de CORBA et de IIOP
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
1 Extension du modèle de composants CORBA avec accès concurrent à des données partagées Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel.
Le web service
Tutorat en bio-informatique
Les sockets.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Un service de partage de données pour DIET : GDS basé sur JuxMem Mathieu Jan Projet PARIS Lyon, 5 décembre 2003.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
Introduction à la Programmation Orientée Objet
Introduction Module 1.
Modèle à objets et sérialisation Olivier ChamlaFrançois Chastanet.
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Applications distribuées Introduction Jean-Jacques LE COZ.
Transcription de la présentation:

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

Plan Vers les composants Les Beans (précurseur) Les Enterprise Java Beans Bases Architecture Sécurité Transaction Déploiement Conclusion

Des procédures aux composants Vers les composants Des procédures aux composants

Historique Logiciel SIMPLICITE 1980 paradigme procédural D’utilisation 1990 paradigme objet 2000 paradigme composant SIMPLICITE D’utilisation COMPLEXITE De l’application

Qu’est ce qu’un Composant ?

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

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

Client / Serveur ARCHITECTURE Client Serveur Données Centralisation / Répartition des données Centralisation / Répartition des traitements ARCHITECTURE

Le modèle 3 tiers Client Serveur Données

Le multi-tiers Client Serveur Données

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)

Les Beans ~ Client Bean Les précurseurs

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.

Cycle de vie Write-once run anywhere Design Time Run Time Outil de developpement Application Design Time Run Time

Sémantique Essentiellement Graphique Client Cependant, il existe des Beans « invisibles » Serveur Pas ou peu existant

Utilisations Java Bean Data Serveur Corba Serveur Java Bean DataBase Protocol Java Bean J DBC Data Serveur IIOP Corba Serveur Java Bean Java Serveur RMI Java Bean

Caractèristiques Les Beans doivent supporter les fonctions suivantes: Introspection Customization Events Properties Persistence

Introspection / Customization Arranger/ Déployer Notion de règles d’écriture Notion de reflection Notion de Bean Info

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

Properties / Persistence Stockage des Beans sur un support physique Notion de Serializable Stockage de l’état courant Possibilité de rendre des attributs non sauvegardables

Conclusions Prototype (Java en construction) Cycle de vie en 2 phases Event Serializable Introspection Cycle de vie en 2 phases Notion de plate-forme d’acceuil => Les Swings sont des Java Beans

Enterprise Java Bean Du coté du serveur

Définitions Enterprise JavaBean is an architecture for component based distributed computing Enterprise Beans are components of distributed transaction-oriented enterprise applications

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)

Exemple d’utilisation JavaBeans client IIOP Enterprise JavaBeans EJB Serveur Enterprise JavaBeans EJB Serveur Java IDL client IIOP IIOP IIOP CORBA client

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

Types d’utilisateurs EJB server provider EJB container provider Bean provider Application assembler Deployer System administrator EJB Architecture Application Administration

Enterprise bean instances Vue Générale Client-view Enterprise bean instances Client component contract Container EJB Server deployment descriptor

Client-view Identité de du composant Home interface 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

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

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)

Développement d’un Bean Création des classes du Bean. (Business, home, remote) Arrangement du Bean. (Transaction, Sécurité, …) Déploiement du Bean. Exécution du Bean.

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

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

Architecture Session et Entity

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

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

Vue Client Session Bean EJBObject EJB Home Client EJB 1 EJBObject EJB Home EJB 2

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

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.

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.

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.

Création d’une Instance de Session Bean Statefull Client EJB Home EJB Object Context Instance Create(args) new new new setSessionContext() ejbCreate(args)

Création d’une Instance de Session Bean Stateless (1/2) Client EJB Home EJB Object Context Instance Create() new

Création d’une Instance de Session Bean Stateless (2/2) Container Context Instance new new setSessionContext() ejbCreate()

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.

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

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

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

Architecture EJBObject EJB Home EJB 1 Client EJBObject EJB Home EJB 2

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()

Vie d’un Entity Bean does not exist and not referenced release reference does not exist and referenced home.create(..) object.remove() or home.remove(…) or direct remove direct insert direct delete or home.remove(…) home.find(…) exists and referenced exist and not referenced release reference

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

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

Bean Provider Quasiment identique que pour Session La classe du bean hérite de java.ejb.EntityBean La Home interface La Remote interface

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)

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 …

Application Assembler Tous les Beans Descripteur d’application : ejb-jar.xml Noms des beans Environnement Liens entre les beans Security Transaction

Sécurité

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

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.

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)

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

Déclaration XML de rôle <security-role> <description> blabla </description> <role-name> employe </role-name> </security-role> …

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>

Les transactions

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.

gérée par le Bean Utilisation de javax.transaction.UserTransaction Programmation classique Commit RollBack …

gérée par le Serveur Spécification des caractéristiques transactionnelles dans le descripteur XML javax.ejb.SessionSynchronization Javax.ejb.EJBContext. setRollbackOnly() getRollbackOnly()

Descripteur XML Cinq aspects transactionnel NotSupported Required Supports RequiresNew Mandatory Never

Descripteur XML <container-transaction> <method> <ejb-name> EmployeRecord </ejb-name> <method-name>*</method-name> </method> <trans-attribute> Required </trans-attribute> </container-transaction>

Et les autres plate-forme Conclusion Et les autres plate-forme

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;

Exemple de Bean javax.ejb.Sessioncontext ctx; public exampleBean() { public void ejbActivate() { } public void ejbPassivate() { public void ejbRemove() { public setSessionContext(javax.ejb.SessionContext ctx) this.ctx = ctx; public exampleBean() {

Exemple de Bean Home Interface public interface ExampleHome extends javax.ejb.EJBHome { Javax.ejb.EJBObject create(int val) throws java.rmi.RemoteException }

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; }

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

Et le futur ? Qu’est ce qu’un composant ? CCM Corba Composant Model DCOM