Slides:



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

Un processus de conception des logiciels distribués pour l’automobile
Laboratoire informatique de Paris 6
Xavier Blanc Web Services Xavier Blanc
Introduction aux environnements répartis
Serveur jeu Le serveur fait partie d'un logiciel de jeu en ligne multi joueur en architecture client serveur. Il répond à des demandes.
Exposé de Système - Informatique et Réseau
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
Introduction aux Entity Beans
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance




Stéphane Frenot - Département Télécommunication - SID - II - Jdbc 280 JDBC Java Databases Connectivity.

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.
Stéphane Frenot - Département Télécommunication - SID - III - Concl 382 Technologies de base Les plomberies –Le transport.
Stéphane Frenot - Département Télécommunication - SID - II - Comp 312 Avantages de l'approche distribuée Economie Performance.
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
Programmer avec Java EE
Introduction aux services WEB
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Université de Versailles-Saint-Quentin
Etude des Technologies du Web services
Serveurs d’application
XML-Family Web Services Description Language W.S.D.L.
Architectures Web - N-Tiers
JAVASERVER FACES Un framework Java pour le développement Web.
Cours GLG203 Cours J2EE JDBC, RMI, IIOP, Sécurité, XML
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Interopérabilité JOnAS - CORBA
Gestion des bases de données
EJB & Serveurs d’applications
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Adaptée du cours de Richard Grin
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
L’architecture J2EE
1 - Architecture Internet
SGBD orientés Objet Standards : OMG et ODMG.
Les EJB Samir AZZOUZ Équipe ObjectWeb
Présentation de CORBA et de IIOP
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Java Enterprise Edition, anciennement J2EE
UV J2EE Module Java Expert
Plan Définitions et exemples Composants de cluster
HIBERNATE Mapping Objet / base de données relationnelle
Chapitre 2 Persistance de données De Hibernate au standard JPA 1.0
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Architecture J2EE gfgfgfggf Khin Chhoung LAO, Cnam.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
Java Enterprise Edition
Struts.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
1 / 76 7 / 02 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB ARCHITECTURE WEB – COURS IV
Serveurs Web à contenu dynamique Emmanuel Cecchet INRIA Rhône-Alpes, Projet Sardes Rice University, Systems lab
Modèle à objets et sérialisation Olivier ChamlaFrançois Chastanet.
Architectures Logicielles Java GLG203 GLG204
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.
Architecture J2EE Web Jean-Jacques LE COZ. J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail.
Transcription de la présentation:

Les Ejb Les EJB sont à CORBA ce qu’est le circuit précablé à la carte mère électronique Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Introduction Les applications monolithique Pas de réutilisation des modèles de données Pas de réutilisation des modèles de traitements Les applications C/S (au sens large) Réutilisation des modèles de données Pas de réutilisation des modèles de traitement Les applications à base de middleware Réutilisation des modèles de données et de traitements Notion de composants serveurs Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Les serveurs d'applications Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Architectures à Objet Distribués Services Métiers Application 1 MiddleWare Application 2 Services d'infrastructure Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Serveur de composants de base Services Métiers Application 1 Services standard d'infrastructure jts cycle vie Application 2 jdbc version Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Serveur de composants intégré Composants Métiers Application 1 Logique métier container infrastructure Gestion automatisée Service d'infrastructure de base Application 2 jdbc jts version cycle vie Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Services du container d'EJB Services internes Gestion de la charge du serveur (cycle de vie, accès client, passivation...) Service de nommage Gestion des accès aux objets métiers Services externes Gestion du mapping sur BD relationnelle Gestion des transactions Gestion des échanges de messages Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Serveur Web dynamique Serveur Web Application 1 Application 2 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Serveur Web dynamique Serveur Web Application 1 CGI CGI Application 2 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Serveur Web dynamique Serveur Web Application 1 LiveWire Php Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Serveur Web dynamique (Servlets / JSP) Application 1 Servlets Servlets Application 2 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Services du container de pages Web Servlet / JSP Services internes Gestion de la charge du serveur cycle de vie Gestion des autorisations d'accès Services externes API Java Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Un serveur d'application Application Java Hébergeant : Des containers Pages Web Composants Métier (EJB) Des services Nommage Base de données/Mapping sur Base Moniteurs transactionnels Déploiement ... Des API sur les services JDBC/JTS/JMS... Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

The J2EE Architecture Applet container Applet Web container EJB container Servlet JSP EJB J2SE http/ssl Java Mail Java Mail Application Client Container JMS JNDI JMS RMI/IIOP JDBC JNDI RMI/IIOP JDBC JTA JTA JAF JAF Application Client J2SE J2SE rmi/ssl JMS JNDI JDBC RMI/IIOP Databases J2SE Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Les offres de serveur d'applications Serveur d'application J2EE Weblogic BEA,WebSphere IBM, Iplanet Sun, Oracle WebObject (Jonhatan/Jonas) INRIA Jboss (Free) Autres serveurs d'applications Microsoft .net Zope (Python) Serveur CORBA (OrbixWeb) Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Les serveurs d'EJB Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Serveur de composants intégré Composants Métiers Application 1 Logique métier container infrastructure Gestion automatisée Service d'infrastructure de base Application 2 jdbc jts version cycle vie Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Serveurs distribués Container Container Appli 1 1 2 Services Services jdbc jdbc Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Enterprise JavaBeans Enterprise Java Beans : Objectif Composants logiciels serveur Objectif Standardiser le développement et le déploiement de composants serveurs écrits en Java Le développement ne se fait que sur l'interface métier de l'objet Le développeur ne prend en compte que la logique métier de l'EJB. Le reste est prise en charge par le containeur. Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Principe de conception des EJB Le modèle des EJB est fondé sur trois concepts pour la conception de systèmes distribués Approche de serveurs sans-états Approche orientée session Approche objet persistant Les spécifications EJB parlent de Session Beans Stateless Session Bean Statefull Session Bean Entity Beans Container-Managed Persistence Bean-Managed Persistence Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Le Bean "stateless Session" Leurs comportements Fournissent un service pour un seul utilisateur Ne maintiennent pas d'état par rapport au client Ne survivent pas à un crash du serveur d'EJB Sont plutôt destinés à vivre sur une courte période Deux instances d'un même bean « sans état » sont identiques Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Les Bean "statefull Session" Leurs comportements Interagissent d'une manière conversationnelle Maintiennent un état sur le client connecté Ne survivent pas à un crash du serveur d'EJB Vivent rapidement Une instance est hébergée par un seul thread Une instance peut être partagée par plusieurs clients Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Stateful vs. Stateless Un bean stateful maintient un état conversationnel qui est récupéré entre deux invocations Un bean stateless n'a pas d'état entre les appels sur ses méthodes Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Exemples de Beans Session Session Stateless Un EJB qui calcule le cos(x) Un décompacteur Un EJB qui vérifie si une donnée est valide Un EJB qui calcule le coût d'une communication téléphonique Session Statefull Un EJB qui gère une réservation Un EJB qui commande les pièces détachées d'un véhicule Un EJB qui gère le flux d'information d'un centre d'appel Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Stateful vs. Stateless EJB client client serveur container skell OM client client Les clients partagent le même contexte client client serveur container client OM skell OM client OM Un client possède son propre contexte sur un EJB stateful Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Etat d’un EJB Session Stateful L’état d'un EJB de type stateful est défini comme la fermeture transitive des objets visibles par les champs du bean Instance d'un chat int age=5 Instance d'une souris capture int age=7 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

EJB Stateful identiques ? Deux EJB stateful sont identiques s'ils partagent le même contexte client ! client client serveur container skell OM client client Les clients partagent la même référence distante Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Comment obtenir la même référence distante ? client client Ce client crée la nouvelle instance 1 serveur container Le client dépose le handle dans une base skell 2 OM Ce client récupère le handle 3 Le client utilise le handle pour créer la même référence distante 4 client client Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Les EJB Entité (Entity EJB) Leurs comportement Ils représentent les données persistantes Ils survivent à un crash Plusieurs clients peuvent utiliser des EJB qui "pointent" sur les mêmes données L'instance EJB contient une copie des données du système de stockage Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Gestion de la persistance Les attributs d'un objet doivent être déposés sur un support persistant Exemples de supports de persistance : Sérialisation Accès à une base sur le JDBC (mappage) Stockage Client id=98282 nom=frenot adresse=34 ville=villeurbanne Mappage ? Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Partage d'EJB entity Quand plusieurs clients partagent un EJB entity ils reçoivent leurs propres instance d'EJB partagent les données sous-jacentes n'ont pas à gérer la synchronisation sur les données client client serveur container client OM skell OM client OM Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Type de persistance Il y a deux mode de gestion de la persistance Container-Managed Persistence (CMP) Bean-Managed Persistence (BMP) 1 container OM CMP OM BMP Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

EJB Entité Exemples : Un EJB qui représente les statistiques d’un site Un EJB qui représente l'évolution d'une cotation Un EJB qui représente une séquence du génôme ... Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Rôle du développeur d'EJB Définition des interface distantes L'interface « Remote  » contient les opérations « métier » d'un EJB Définition de l'usine de fabrication des EJB L'interface « Home » d'un EJB Est utilisée par les clients pour créer et/ou retirer un EJB Fournit des méta informations sur l'EJB Est partagée par tous les clients de l'EJB Voit son stub d'invocation placé dans le service de nommage au déploiement Définition du corps de l'EJB Implantation concrète des services métier Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Exercice Un EJB qui implante C-MesCources ? Un EJB qui gère un cours en vidéo ? Un EJB qui gère le passage du TOEIC ? Un EJB qui calcule de la vitesse de rotation des planètes ? Un EJB qui représente le compte bancaire d'une personne ? Un EJB qui gère un appel de support technique ? Un EJB qui calcule la valeur de remboursement d'un prêt ? Un EJB de gestion de chaîne Hi-Fi ? Un EJB qui liste les personnes connectées sur un réseau ? Un EJB qui contrôle la validité d'un cookie d'une page Web ? Un EJB qui représente un document Word ? Un EJB qui représente une enchère sur un site ? Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Le fonctionnement global jndi OM 5 3 4 1 Client 2 Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Deux principes clés : les interfaces Interface « home » Interface de l'usine de fabrication des OM Est utilisée par les clients pour créer un EJB Est utilisée par un client pour retirer un EJB Fournit des méta informations sur l'EJB Est partagée par tous les clients de l'EJB Voit son stub d'invocation placé dans le service de nommage au déploiement Interface « remote » Représente l'OM distant (stub) Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Les optimisations Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Pooling d'objets Un serveur d'application peut créer un pool d'objets « nus » qui peuvent être utilisés quand des requêtes sont faites client client EJB pool Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

La passivation La passivation est le fait de placer un EJB sur un support secondaire La passivation : A lieu quand un EJB dépasse son idle-timeout Permet à un serveur d'application de réclamer des ressources Placer une instance sérialisée de l'EJB dans son support de stockage Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Pooling / Passivation sur Weblogic Ne peut pas exc₫der maxBeansInCache Objets passiv₫s client client EJB cache Un client re₤oit CacheFullException si le cache est plein et rien ne peut ₨tre passiv₫ Un EJB est passiv₫ s ’il a d₫pass₫ idleTimeoutSeconds Les objets sont plac₫s dans le pool libre quand les clients en ont fini Ne peut pas exc₫der maxBeansInFreePool Free Pool Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Distribution, Equilibrage de charge, Tolérance de pannes Application et logique métier Logique d'application Logique métier Accès données IHM DBMS Ses Ett Ses Ses Ses Ett EJB Container Nommage, Sécurité, Cycle de vie, Accès concurrents, Transaction, Persistance Serveur d ’application Distribution, Equilibrage de charge, Tolérance de pannes Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Les rôles dans le monde EJB Fournisseur de serveur d'application Fournit le serveur intégré avec des services de base Fournisseur de container Fournit les containeurs d'EJB Fournisseur d'EJB Expert dans un domaine vertical; crée les composants EJB Développeur d'application Assemble les applications à partir de composants EJB préfabriqués Spécialiste du déploiement Déploie les applications Maîtrise les principes d'architecture Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Cycle de développement Implantation de la base de données (opt.) Implantation des EJB (SL/SF/Entity) Implantation des JSP Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Cycle de développement d'un EJB session 1) Définir les interfaces métier Interface Remote 2) Définir les méthodes de gestion du cycle de vie Interface Home 3) Définir les caractéristiques intrinsèques du bean dans un fichier de description 4) Définir les caractéristiques de déployement 5) Déployer le bean 6) Réaliser le(s) clients qui utilisent le service Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Interface Métier Interface Remote de l'EJB fibonacci package exemple.fibonacci; public interface Fibonacci extends javax.ejb.EJBObject { public int getFibonacciNumber(int n) throws java.rmi.RemoteException; } Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Interface Home Interface Home de l'EJB fibonacci package exemple.fibonacci; import javax.ejb; import java.rmi; public interface FibonacciHome extends EJBHome { public Fibonacci create() throws CreateException, RemoteException; } Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Développement du Bean package exemple.fibonacci; import java.rmi.*; import javax.ejb.*; public class FibonacciBean implements SessionBean { public void ejbPassivate(){} public void ejbActivate(){} public void ejbRemove(){} public void setSessionContext(SessionContext ctx){} public void ejbCreate() { System.out.println("Cet EJB Fibonacci est créé"; } public int getFibonacciNumber(int n){...} Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Descripteur du Bean <?xml version="1.0"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <enterprise-beans> <session> <ejb-name>Fibonacci</ejb-name> <home>exemple.fibonacci.FibonacciHome</home> <remote>exemple.fibonacci.Fibonacci</remote> <ejb-class> exemple.fibonacci.FibonacciBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> ... </enterprise-beans> </ejb-jar> Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Descripteur du déploiement <?xml version="1.0"?> <!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN" "http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd" > <weblogic-ejb-jar> <weblogic-enterprise-bean> <ejb-name>fibonacci</ejb-name> <stateless-session-descriptor> <pool><max-beans-in-free-pool>100</max-beans-in-free-pool></pool> </stateless-session-descriptor> <transaction-descriptor> <trans-timeout-seconds>300</trans-timeout-seconds> </transaction-descriptor> <jndi-name>fibonnaci</jndi-name> </weblogic-enterprise-bean> </weblogic-ejb-jar> Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Déploiement du bean Eventuellement (pré-compilation) Jar + cp Au déploiement Inscription de l'Usine (interface Home) sur le containeur Dépôt du stub de manipulation de l'Usine sur le service de nommage Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Développement d'un client public class Client{ public static void main(String [] argv){ try{ FibonacciHome home=(RobotHome)context.lookup("fibonaci"); Fibonacci jacques=home.create(); }catch(NamingException e){ }catch(CreationException e){ }catch(RemoteException e){} } Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Développement d'un client JSP <html><head><title> <%= pagetitle %> </title></head> <h2><font color=#DB1260><%= pagetitle %></font></h2> <%@ page import="edt.matiere.*"%> <%!String pagetitle = "JSP emploi du temps : Les FaceAFaces";%> <%try { ctx = getInitialContext(); homeFib = (FibonnacciHome) ctx.lookup("fibonnaci"); uneSuite=homeFib.create(); out.println("fib(7)="+uneSuite.getFibonacciNumber(7)); }catch(Exception e){e.printStackTrace(); } %> </body></html> Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr

Points forts Notion de container Robustesse, standardisation, évolution Interface de développement standardisées Pas / Peu de phase de prise en main Automatisation de nombreuses tâches Gestion de la persistance, transactions… Intégration à l'API java Marché explosant Stéphane Frenot - Département Télécommunication - SID - stephane.frenot@insa-lyon.fr