J2EE. Java2 Enterprise Edition. Pierre Yves Gibello pierreyves.gibello@experlog.com Mise à jour : 30 Septembre 2004



Documents pareils
Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Java EE. Java Enterprise Edition. Pierre-Yves Gibello - pierreyves.gibello@experlog.com (Mise à jour : Septembre 2011)

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

J2EE - Introduction. Développement web - Java. Plan du chapitre

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Java pour le Web. Cours Java - F. Michel

JOnAS 5. Serveur d application d

Introduction à la plateforme J2EE

Auto-évaluation Aperçu de l architecture Java EE

Plan. Department of Informatics

Applications des patrons de conception

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

Environnements de Développement

Java Naming and Directory Interface

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Compte Rendu d intégration d application

JOnAS Day 5.1. Clustering

Documentation de la plate forme JOnAS

Cedric Dumoulin (C) The Java EE 7 Tutorial

Mise en œuvre des serveurs d application

Documentation de la plate forme JOnAS. Frederic Maistre

1. Installation d'un serveur d'application JBoss:

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Messagerie asynchrone et Services Web

10. Base de données et Web. OlivierCuré

JOnAS Day 5.1. Outils de développements

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

Java Enterprise Edition

2 Chapitre 1 Introduction

IBM WebSphere Application Server 5.0 : Administration avancée

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

EXA1415 : Annotations

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

Remote Method Invocation (RMI)

Présentation J2EE. Stéphane Croisier, Directeur Serge Huber, Directeur Technique. 13 Juin Jahia Ltd. All rights reserved.

Le passage à l échelle de serveur J2EE : le cas des EJB

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Composants Logiciels. Le modèle de composant de CORBA. Plan

Module BD et sites WEB

Modèle d Administration des Systèmes Distribués à Base de Composants.

Nouvelles Plateformes Technologiques

Architecture applicative et Cartographie

Les processus métiers : concepts, modèles et systèmes

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

TD sur JMS ) Qu est-ce qu un middleware orienté message (MOM)? Quelles différences faites-vous entre un MOM et JMS?

NSY102. Conception de logiciels Intranet Introduction

Augmenter la disponibilité des applications JEE grâce au clustering : Le projet open source JShaft

Création d une application JEE

Evaluation Idéopass Cahier d analyse technique

Urbanisme du Système d Information et EAI

Web Tier : déploiement de servlets

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

Hébergement de sites Web

Architectures n-tiers Intergiciels à objets et services web

Réalisation : Encadrés par : BEN GHORBEL Mohamed Zied OUESLATI Cherif. Mr. ROMDHANI Mohamed

Java - RMI Remote Method Invocation. Java - RMI

IBM DB2 Alphablox. d administration GC

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

BMC Middleware Management

Développement, déploiement et sécurisation d'applications JEE

Application web de gestion de comptes en banques

Conception et Implémentation d un serveur d applications dans le cadre du projet EISMO

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Catalogue des Formations Techniques

Utilisation de Jakarta Tomcat

Formation en Logiciels Libres. Fiche d inscription

Refonte front-office / back-office - Architecture & Conception -

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

EJB. Karim Bouzoubaa Issam Kabbaj

NFP111 Systèmes et Applications Réparties

Windows (2000/NT), Solaris, AIX, HP-UX, Linux Haute disponibilité : SunCluster 3, Veritas Cluster Server 4. J2EE (JSP, Servlet, EJB, JTA), Open Source

Introduction aux «Services Web»

MQPerf un outil de diagnostic en mode SaaS des performances optimales du MOM JORAM

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Notes de version de Sun Java System Application Server Enterprise Edition

Datalift. + + Architecture Modularité Déploiements. d j = 09/04/2015 Laurent BIHANIC

RMI le langage Java XII-1 JMF

Projet Java EE Approfondi

Java DataBaseConnectivity

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Virginie!SALAS Janvier!09! NFE107

Accès aux bases de données

Conception de serveurs d'applications ouverts

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Remote Method Invocation en Java (RMI)

OpenPaaS Le réseau social d'entreprise

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

What s New. Sun ONE Application Server. Version 7, Enterprise Edition

MOM: Concepts & Applications

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Conception Exécution Interopérabilité. Déploiement. Conception du service. Définition du SLA. Suivi du service. Réception des mesures

Rapport de projet de fin d études

2.1 Liferay en un clin d'oeil Forces, faiblesses, opportunités et menaces Résumé de notre évaluation... 5

Serveur d'application à la juste taille

Transcription:

J2EE Java2 Enterprise Edition Pierre Yves Gibello pierreyves.gibello@experlog.com Mise à jour : 30 Septembre 2004 Ce document est couvert par la licence Creative Commons Attribution ShareAlike. This work is licensed under the Creative Commons Attribution ShareAlike License.

J2EE Objectifs Faciliter le développement de nouvelles applications à base de composants Intégration avec les systèmes d information existants Support pour les applications «critiques» de l entreprise Disponibilité, tolérance aux pannes, montée en charge, securité...

J2EE C est quoi? http://java.sun.com/j2ee Spécifications Modèle de programmation Implémentation de référence Suite(s) de tests Label J2EE Sun (qualification de plateformes)

Offre commerciale BEA WebLogic (haut de gamme) IBM Websphere (no 1) Sun Java System App. Server Borland Enterprise Server Oracle 9i Application Server Macromedia jrun SAP Web application server Iona Orbix E2A

Offre open source JBoss (no 1 en nombre de déploiements) ObjectWeb JOnAS(no 2, intégré à plusieurs distro Linux Entreprise) Apache Geronimo (démarrage fin 2003) openejb ejbean

J2EE sous l œil de Darwin... Standard en évolution depuis 1997 J2EE 1.0 à 1.4 en 2003, etc... Au départ, applications Web n tiers Présentation (Servlets puis JSP), essentiellement HTTP Logique métier : EJB Données : JDBC Puis infrastructure de support standard pour EAI Facteurs de rationnalisation majeurs (JTA, JMS, JCA, Web Services) Evolution de progiciels existants vers J2EE

J2EE Architecture Browser WEB Container html http Servlets JSPs JDBC JMS JTA Applets rmi rmi JCA JAAS DB rmi EJBs JavaMail JNDI public static void main( ) { EJB Container EIS Java Application J2EE Application Server

Client Architecture multi tiers Léger (Web, browser) Lourd (Application java, Applet ) Architecture orientée service (Application répartie sans présentation) Serveur d applications Conteneur EJB + logique métier Services non fonctionnels EIS ou Base de données

Un serveur J2EE Java Client Source : Bull/ObjectWeb (JOnAS) RMI Calls JOnAS «J2EE» Server Web Container EJB Container HTTP Servlets Home interface Remote interface Enterprise Enterprise Enterprise Java Bean Java Bean Java Bean HTML Client Web Transaction Management Ear Naming EJB Database... JDBC Calls database Services

Conteneur Web Servlets Code java exécuté sur le serveur Equivalent du CGI Génération de contenu Web dynamique JSP: Java Server Pages Mélange de HTML/XML et de code java Librairies d extension («taglibs») Précompilation en servlet

RMI Remote Method Invocation Java seulement, mais passerelles «RPC objet» (appels sur objets distants) Service de nommage (RMI registry) Sécurité paramétrable (SecurityManager) Garbage Collection distribuée Téléchargement de code Fonctions avancées Activation d objets persistents, Réplication

JNDI Service de nommage / annuaire Java Naming and Directory Interface API accès aux annuaires javax.naming «Service Provider» par annuaire cible (LDAP, NIS, RMI registry ) Utilisation avec les EJB Accès à l interface «home» pour initialiser Accès à diverses ressources (UserTransaction, Queues JMS, DataSources )

JMS Java Messaging Service JMS Provider : inclus dans J2EE Transport synchrone ou asynchrone, Garantie de livraison «Messaging domains» point à point ou «publish/subscribe» Lien avec EJB : «message driven bean» Pour échanges asynchrones

API J2EE de transactions : JTA Java Transaction API Package javax.transaction TransactionManager : begin(), commit(), rollback() Transaction : commit(), rollback(), enlistresource(xaresource), registersynchronisation(synchronization)... Synchronization : beforecompletion(), aftercompletion(commit rollback)

JTA : Participants XAResource Conformes à la spécification XA Enregistment avec transaction.enlistresource() Synchronization Pour les ressources «non transactionnelles» (EAI ) Participant averti des frontières de transaction enregistrement : transaction.registersynchronization() beforecompletion() équivaut à prepare() aftercompletion(état = commit rollback) équivaut à commit rollback

API XA de J2EE Package javax.transaction.xa XAResource (prepare(), commit(), rollback()... Xid (identifiant de transaction XA) Package javax.sql Extension de JDBC (bases de données) XADataSource (getxaconnection()) XAConnection (PooledConnection, avec getconnection() et getxaresource())

JMX Java Management extensions API unique pour applications de management Mbeans avec accesseurs get/set Typage faible, attributs nommés Serveur JMX Enregistrement des Mbeans Les applis d administration dialoguent avec le serveur JMX Instrumenter un composant Fournir un ou des Mbeans Les enregistrer auprès du serveur JMX

JMX : Exemple d un serveur J2EE Source : ObjectWeb JOnAS Admin console EJB Container EJBs WEB Container Admin Servlets MBeans Registry EJB Transaction Security EAR Web.. Management JMX Server MC4J Services J2EE Server

EJB: Architecture JavaBeans pour l Enterprise Pas des JavaBeans (pas de représentation graphique) Logique métier S appuie sur J2SE et les APIs de J2EE JNDI, JTA/JTS, JDBC, JMS, JAAS Gestion déclarative (personnalisation sans toucher au code source) Portable sur les différents conteneurs EJB

EJB: Gamme de services implicites Gestion du cycle de vie Gestion de l état Sécurité Transactions Persistance Localisation des composants transparente (comparable à objets distribués CORBA) Répartition de charge, pooling => Le développeur se focalise sur les aspects métier

Lifecycle interface create remove find Remote(rmi) ou Local Implementé par le conteneur Client Interface Métier: Remote(rmi) ou local EJB Implementation du composant: logique métier (code) callbacks pour le conteneur (ejbcreate, ejbpassivate, ejbload, ) Home Composant Descripteur de déploiement: comportement transactionnel (Tx attributes) Sécurité (ACLs) Persistance (entity beans) Ressources (DataSources ) Logique métier + Callbacks + ic=new InitialContext(); ds = (DataSource) ic.lookup( java:comp/env/jdbc/myds ); DD <resource ref> <..name>jdbc/myds <trans attribute>required Conteneur EJB

EJB: Interface composant Remote (RMI) ou Local Vue client de l EJB Declare les méthodes métier Implementée par les outils intégrés à la plateforme EJB au moment du déploiement

Exemple: Remote Interface javax.ejb.ejbobject Hérite de Interface Fournisseur // méthodes métier + getnom():nom + setnom(nom:nom):void + getadresse():adresse + setadresse( adresse:adresse):void

EJB: Home Interface Interface composant accessible à distance (RMI) Représente le cycle de vie du composant (création, suppression, recherche) Implementée par les outils intégrés à la plateforme EJB Séparée de la Remote Interface car elle représente des comportements non spécifiques à une instance de bean

Exemple: Home Interface javax.ejb.ejbhome Hérite de Interface FournisseurHome // méthodes de gestion de cycle de vie + create(id:integer):fournisseur + findbyprimarykey( id:integer):fournisseur

EJB: Implémentation du Bean Hérite de EntityBean ou SessionBean mais n implémente pas les interfaces Home ou Remote Pourtant: Implémente les méthodes métier de l interface Remote Définit et déclare les methodes correspondant à l interface Home.

Exemple : Implém. de Bean javax.ejb.entitybean Interface Implémente Class FournisseurBean id:int nom:nom adresse:adresse // méthodes de gestion de cycle de vie + ejbcreate( id:integer):void + ejbfindbyprimarykey( id:integer):void // méthodes métier + getnom():nom + setnom( nom:nom):void + getadresse():adresse + setadresse( adresse:adresse):void

EJB: Code client Object ref ; FournisseurHome home; // Home interface Fournisseur fourn; // Remote interface, pas le bean // appel JNDI pour obtenir une référence à l interface Home ref = jndicontext.lookup( "java:comp/env/ejb/fournisseur"); home = PortableRemoteObject.narrow(ref, FournisseurHome.class); // créer un Bean fourn = home.create(idfournisseur); // appel méthode métier fourn.setnom(unnom);

EJB: Bean Entité Représente des données dans la base de données Container Managed Persistence (CMP) or Bean Managed Persistence (BMP) En mode CMP, le conteneur EJB gère la persistance du bean (pas d accès BD dans le code). En mode BMP, c est le développeur du Bean qui gère la persistance (par exemple, en JDBC).

EJB: Bean Session Gestion des interactions entre beans entité ou session, accès aux ressources, réalisation d actions sur demande du client Objets métier non persistants Stateful ou Stateless maintient ou pas un état interne en mémoire => Un Bean Stateful encapsule la logique métier et l état specifiques à un client

EJB : Message Driven Bean Composant asynchrone Execution sur réception d un message JMS Méthode onmessage() Appels à d autres beans, etc Descripteur de déploiement Associations Bean / ressource JMS Ressources JMS (ex. Queue ou Topic)

Message Driven Bean : exemple TX MDB StockHandler Mise à jour Entity Bean Stock BD Envoi message MDB Order Appli : Client JMS publier Serveur EJB JMS Topic Queue QCF créer créer Administration bind JNDI

Message Driven Bean : exemple (2) public class StockHandlerBean implements MessageDrivenBean, MessageListener { public void onmessage(message message) {... sh = (StockHome)initialContext.lookup("java:comp/env/ejb/Stock"); queue = (Queue)initialContext.lookup("java:comp/env/jms/Orders"); MapMessage msg = (MapMessage)message; pid = msg.getstring("productid"); qty = msg.getstring( "Quantity"); cid = msg.getstring("customerid"); Stock stock = sh.findbyprimarykey(pid); stock.decreasequantity(qty); qs = session.createsender(queue); TextMessage tm = session.createtextmessage(); String m = "For CustomerId = "+cid+" ProductId= "+pid+" Quantity= "+qty; tm.settext(m); qs.send(tm);... } }

EJB: Configuration & Déploiement Interfaces Home et Remote (ou Local), classe qui implémente le Bean Descripteur de déploiement (fichier XML) <ejb jar> Description du Bean (Entity ou Session,...) Ressources (Base de données,...) Securité: permissions et roles Persistance (BMP, CMP) Attributs transactionnels </ejb jar> => Utilisé par l assembleur d application et par le conteneur EJB au moment du déploiement

Descripteur de déploiement : Bean <enterprise beans> <entity> <description>ejb Fournisseur ( BMP )</description> <ejb name>fournisseur</ejb name> <home>logistique.fournisseurhome</home> <remote>logistique.fournisseur</remote> <ejb class>logistique.fournisseurbean</ejb class> <persistence type>bean</persistence type> <prim key class>java.lang.string</prim key class> <reentrant>false</reentrant> <resource ref> <res ref name>jdbc/clientdb</res ref name> <res type>javax.sql.datasource</res type> <res auth>container</res auth> </resource ref> </entity> </enterprise beans> Bean Entité Ressource : ici, BD «Indirection» : Lien entre interfaces et implémentation Persistance : Bean ou Container

Ressources et JNDI Ressources déclarées dans le descripteur de déploiement (accès via JNDI) Convention de nommage Noms préfixés par le type de ressource référencée (ejb, jms, jdbc, mail, url ) Exemple fh = (FournisseurHome)initialContext.lookup( "java:comp/env/ejb/fournisseur"); bd = (DataSource)initialContext.lookup( "java:comp/env/jdbc/compta");

Indirection Contrat du conteneur entre les clients et les EJB Garantit que l on passe par le conteneur Exemple : activation / passivation, pool d instances... La classe d implémentation n implémente pas les interfaces Home ou Remote; pourtant, elle implémente les méthodes de Home et Remote Le lien est fait par le descripteur de déploiement Renommage des méthodes de Home create() > ejbcreate(), etc... Exception si appel direct! (méthode inexistante)

Indirection : implémentations Génération de code (JOnAS, WebLogic) Code d interposition entre le bean et le conteneur Généré à partir des interfaces du bean Paramétré par le descripteur de déploiement Dynamic Proxy (JBoss) Pas de génération / compilation Plus souple, mais moins efficace

Optimisations liées à l indirection Stateless Session Bean : Sans état Pool d instances Le serveur peut y accéder via un pool de threads Stateful session et Entity beans Activation / Passivation (appel par le container de ejbactivate() après activation / ejbpassivate() avant passivation)

Conséquences de l indirection... Attention à «this»... Pas de «this.methode()» sur les méthodes d interfaces «local» ou «remote» Eviter de passer «this» en paramètre Utiliser les références! Remote : context.getejbobject() Local : context.getejblocalobject() Contexte initialisé par le conteneur appel setsessioncontext ou setentitycontext après la création (méthode à implémenter).

Descripteur de déploiement : Persistance Bean managed (BMP) <persistence type>bean</persistence type> Container managed (CMP) <persistence type>container</persistence type> <cmp field> <field name>codefournisseur</field name> </cmp field>

Persistance BMP Bean managed persistence Le bean gère sa persistance Exemple : usage direct de JDBC Appels de méthodes par le conteneur ejbload() restaurer l état ejbstore() sauvegarder l état Méthodes jamais appelées par le Bean! (ne pas appeler depuis activate / passivate)

Persistance CMP Persistance gérée par le conteneur Gestion déclarative (descripteur de déploiement) Champs persistants (avec méthodes get/set) Relations entre instances d entités CMP (CMP2) (cardinalité 1 1 ou 1 N, uni ou bi directionnel) EJB QL (CMP2) Basé sur SQL92 («select from where») Méthodes «find» associées à des requêtes avec paramètres

Exemple CMP: Home interface public interface BookHome extends EJBHome { public Book create(string id, String author) throws RemoteException, CreateException; public Book findbyprimarykey (String id) throws RemoteException, FinderException; } public Collection findbyauthor(string author) throws RemoteException, FinderException;

CMP: Descripteur de déploiement <entity> <display name>book</display name> <ejb name>book</ejb name> <home>bookhome</home> <remote>book</remote> <ejb class>bookejb</ejb class> <persistence type>container</persistence type> <prim key class>java.lang.string</prim key class> <cmp field><field name>title</field name></cmp field> <cmp field><field name>author</field name></cmp field> <cmp field><field name>price</field name></cmp field> <primkey field>title</primkey field> <query> <description></description> <query method> <method name>findbyauthor</method name> <method params> <method param>java.lang.string</method param> </method params> </query method> <ejb ql>select distinct object(b) from Book b where b.author=?1</ejb ql> </query> </entity> Inutile d implémenter la méthode findbyauthor()

CMP: Méthodes find et ejbselect «Finder methods» (findby ) Retournent 1 bean (interface métier) ou une Collection Méthodes ejbselect Equivalent aux «findby» Local à un bean (pas d accès externe)

Transactions Applicable aux 3 profils de composants Session, Entité, Message driven Limitation pour le MessageDriven (attributs «Required» ou «NotSupported» seulement). Gestion explicite Utilisation de javax.transaction.usertransaction (JTA) Contrôle de la transaction (timeout, «rollbackonly») Exemple UserTransaction utx = (UserTransaction)ctx.lookup(«java:comp/UserTransaction»); utx.begin(); utx.commit();

Descripteur de déploiement : Gestion déclarative des Transactions <assembly descriptor> <container transaction> <method> <ejb name>fournisseur</ejb name> <method name>*</method name> </method> <trans attribute>required</trans attribute> </container transaction>... </assembly descriptor> NotSupported Required RequiresNew Mandatory Supports Never

Gestion déclarative des transactions Au niveau de la méthode du bean! (démarcation) NotSupported Si transaction courante, elle est suspendue Required Si pas de transaction, nouvelle transaction RequiresNew Nouvelle transaction (si tx courante, suspendue) Mandatory Exception si pas de transaction courante Supports Si transaction courante, l utiliser Never Exception si transaction courante

Gestion des évènements transactionnels (Session Bean) Interception par un EJB des évènements transactionnels (produits par le conteneur) Implantation de javax.ejb.sessionsynchronization Evènements (appelés par le conteneur) afterbegin : appelé après UserTransaction.begin beforecompletion : appelé avant UserTransaction.commit aftercompletion(true false) : appelé après commit ou rollback

Descripteur de déploiement : <assembly descriptor>... <security role> Sécurité <description>personnel administratif de gestion</description> <role name>administratif</role name> </security role> <method permission> <role name>administratif</role name> <method> <ejb name>fournisseur</ejb name> <method name>*</method name> </method> </method permission> </ assembly descriptor> Définition de rôle Permissions accordées à un rôle

JCA Java Connector Architecture Intégration avec les SI d entreprise (EIS) Applications (ERP, Supply Chain ) Middleware (gestionnaire de transactions ) Connecteur composé de : Contrats système API cliente Resource Adapter

Contrats Système Interaction entre le SI et le serveur d applications Gestion des connexions et pooling Gestion des transactions (par le serveur d application et/ou le SI) Sécurité (accès sécurisé au SI)

API clientes Standard : CCI (Common Client Interface) Avantage : API standard Inconvénient : trop général et peu compréhensible (pas de «sens» métier), implémentation facultative. Spécifique : API spécifique au SI, fournie par le «resource adapter» Avantage : API «métier» Inconvénient : spécifique au SI concerné, donc différente selon le connecteur...

Resource Adapter Implémentation de l interfaçage avec le SI Classes d interface Librairies natives du SI Descripteur de déploiement Configuration du connecteur au sein du serveur d application Classes d implémentation des interfaces standard Fonctionnalités supportées ou non (transactions, sécurité )

Déploiement Packaging en fichier.rar (RA archive) Déployé par le serveur d application Format jar avec organisation standard Contient tous les éléments du connecteur Descripteur de déploiement (ra.xml) dans META INF : configuration du connecteur

Rôles définis par la spec. EJB Fournisseur de beans Développeur qui crée les EJB Assembleur d application Crée l application par assemblage d EJB Administrateur Déploiement, sécurité, explotation, montée en charge Analogue au rôle de DBA pour les BD

Packaging Application J2EE (aggrégarion de différents tiers) Fichier «.ear» + descripteur «application.xml» Tiers client Web : fichier «.war» + descripteur «web.xml» Application : fichier «.jar» + descripteur «application client.xml» (lancement du main() de la classe spécifiée dans le «manifest», attribut «Main Class») Tiers EJB Fichier «.jar» + descripteur «ejb jar.xml» Tiers «EIS» (connecteurs JCA) Fichier «.rar» + descripteur «rar.xml»

Persistance + Transactions : exemple Conteneur EJB EB1 DD no cust DB1 DB2 EJB JMX REG DBM R1 server2 Admin client http Conteneur WEB admin SrVlt Conteneur EJB EB2 Web JMX 2 phase commit JTM JMX EJB DBM R2 Appli client server1 server3

Répartition de charge : notations Un noeud (machine) qui héberge un ou plusieurs serveurs web Un conteneur Web ejb Un conteneur EJB web Un serveur qui héberge un conteneur Web ejb Un serveur qui héberge un conteneur EJB web ejb Un serveur qui héberge un conteneur Web et un conteneur EJB Apache mod_jk Un serveur Apache avec le module mod_jk

Répartition de charge : scenarii (1) Répartition du serveur J2EE Compact Réparti (au sein d un même nœud) Réparti web ejb web ejb web ejb

Répartition de charge : scenarii (2) (1) (2) web ejb web ejb Apache mod_jk Apache mod_jk web ejb web ejb (3) Répartition de charge EJB Réplication session http (4) web web ejb Apache mod_jk ejb Apache mod_jk web web ejb

Répartition de charge et clustering Source : ObjectWeb JOnAS Tomcat JOnAS EJB Container JNDI Apache Mod_jk Tomcat Tomcat JOnAS EJB Container JOnAS EJB Container JNDI JNDI DB