Vous êtes sur la page 1sur 52

Module Java Expert

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT

UV J2EE

Module Java

Vue densemble du langage Java Le langage Java : syntaxe et smantique Programmation multi-tche : les threads Accder aux bases de donnes Composants rutilisables : le modle MVC Dveloppement Client/Serveur Prsentation de lIDE VisualAge Les serveurs dapplications J2EE Les Enterprise JavaBeans R-ingnierie dapplications Java

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 2 / 52

Prsentation de J2EE

Java 2 Platform, Enterprise Edition est sorti officiellement Java One en 1998 en mme temps que les Enterprise JavaBeans. Il est n de besoins grandissant des entreprises pour dvelopper des applications complexes distribues et ouvertes sur l Internet.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 3 / 52

Prsentation de J2EE

Java 2 Platform, Enterprise Edition inclut les API fondamentales Java suivantes:
Les Enterprise JavaBeans (EJB) : composants mtiers Les JavaServer Pages (JSP) et les Servlets : composants Web Java DataBase Connectivity (JDBC) pour l accs aux bases de donnes relationnelles.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 4 / 52

Prsentation de J2EE

Java Transaction Service (JTS) permet d accder un service de transactions rpartis. L API Java Transaction (JTA) fournit une dmarcation des transactions dans une application. Java Message Service (JMS) : pour accder divers services de messageries.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 5 / 52

Prsentation de J2EE

Java Naming and Directory Interface (JNDI) fournit un accs aux services de dnomination, DNS, LDAP. Remote Method Invocation (RMI) sur Internet Inter-ORB Protocol (IIOP) permet une invocation de mthodes distance au-dessus du protocole IIOP de CORBA.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 6 / 52

J2EE - Prsentation

Avec J2EE, Sun essaie de faire de Java un langage part entire, mais surtout une plate-forme viable de dveloppement dans le cadre de l entreprise J2EE nest pas un simple regroupement d APIs Elle dfinit galement un environnement de programmation bas sur une architecture dexcution Un des objectifs : faciliter la vie des dveloppeurs en permettant lencapsulation de la complexit inhrente aux environnements distribus dans une architecture base sur les conteneurs Le programmeur n'a plus se soucier que de la rdaction de la logique mtier de son application

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 7 / 52

La plate-forme J2EE

Environnement d'excution de J2EE


J2EE se contente de regrouper un certain nombre d'API, mais il prsente galement la caractristique remarquable de faire abstraction de l'infrastructure d'excution
=> Juste une spcification, ensuite implante par les diteurs logiciels qui mettent au point les serveurs d'applications

Informatique distribue "traditionnelle" = souvent problmes lis non pas la logique propre l'application mais la mise en uvre de services complexes (threading, transactions, scurit) J2EE introduit la notion de conteneur, et via les API J2EE, il labore un contrat entre le conteneur et les applications C'est le vendeur du conteneur qui se charge de mettre en uvre les services pour les dveloppeurs d'applications J2EE, dans le respect des standards

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 8 / 52

Technologies J2EE

Technologies composants
Contient la partie la plus importante de l'application : la logique mtier 3 types de composants : les JSP, les Servlets et les EJB

Technologies de services
fournissent aux composants de l'application des services connexes leur permettant de fonctionner en toute efficacit

Technologies de communication
Quasiment transparentes pour le programmeur d'applications, elles prvoient les mcanismes de communication entre les diffrentes parties de l'application, qu'elles soient locales ou distantes

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 9 / 52

Technologies J2EE

Technologies composants
Quelle que soit l'application, le but essentiel est de modliser la logique mtier ncessaire en utilisant les composant, units rutilisables au niveau applicatif
Donc, mme si le conteneur est en mesure de fournir l'environnement d'excution, la couche de communication ainsi que de nombreux services, la cration des composants applicatifs incombe au dveloppeur

Toutefois, ces composants dpendront de leurs conteneurs pour de nombreux services, tels que la gestion du cycle de vie, le threading, la scurit... => Ceci permet de se consacrer uniquement aux mthodes mtier sans s'appesantir sur la smantique de bas niveau du conteneur

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 10 / 52

Avantages de J2EE

Standard de plate-forme Java


pour les diteurs de Systmes d Entreprise implmenter des produits compatibles bnficier des avantages de la technologie composant se concentrer sur le business au lieu de rsoudre les problmes d intgration.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 11 / 52

Architecture deux-tiers

Applications centres sur des gros systmes. 2-tiers = client/serveur Tiers Client Tiers Serveur de donnes

Prsentation GUI

PC Client Logique de prsentation, Logique de business

Rseau

Interactions et traitements de lentreprise


Deruelle Laurent Copyright 2002 Laurent Deruelle

Serveur de bases de donnes

Module UV J2EE Page 12 / 52

Limites de l architecture deux-tiers

Intgrit des bases de donnes facilement compromise. Administration difficile lorsque la logique mtier doit tre modifie. Transgression de la scurit en altrant un processus business. Application lie un seul type de prsentation

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 13 / 52

Architecture trois niveaux

Sparation de la logique de prsentation et de la logique mtier.

Tiers Interface

Tiers Mtier

Tiers Donnes

Ordinateur Client Logique de Logique de prsentation, Prsentation


Deruelle Laurent Copyright 2002 Laurent Deruelle

Rseau

Serveur intermdiaire Logique de business

Rseau

Serveur de bases de donnes

Module UV J2EE Page 14 / 52

Avantages de l architecture trois niveaux

Amliore les monte en charge et le nombre de connections. Meilleure performance, scurit et gestion de l application.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 15 / 52

Limites de l architecture trois niveaux

Plus complexe de dvelopper ce type d application:


gestion de la rpartition, multithreading, gestion de la scurit.

Difficult d intgration entre les systmes 3-tiers. L architecture classique 3-tiers nest pas prvue pour le Web

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 16 / 52

Architecture quatre niveaux

Introduction et dveloppement d applications orientes Web: J2EE Tiers Services Web Tiers Mtier Tiers Donnes

Tiers Interface

Ordinateur Client

Internet Serveur Web

Serveur Mtier Logique de business

Affichage

Application Web

Serveur de bases de donnes

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 17 / 52

Modle J2EE pour les architectures deux niveaux


Tiers Client Poste Client Conteneur Application-Client Composants Prsentation Tiers Serveur de donnes

JDBC

Serveur de bases de donnes

Composants Mtiers

Dveloppement classique J2SE


Module UV J2EE Page 18 / 52

Deruelle Laurent Copyright 2002 Laurent Deruelle

Modle J2EE pour les architectures trois niveaux


Tiers Interface Tiers Mtier Tiers Donnes

Poste Client

Serveur Mtier

Conteneur Application-Client Logique de prsentation, Composants Prsentation

RMI
IIOP

Conteneur EJB JDBC Bean Enterprise

Serveur de bases de donnes

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 19 / 52

Modle J2EE pour les architectures trois niveaux


Tiers Services Web Serveur Web Conteneur Internet Web Tiers Mtier Tiers Donnes

Tiers Interface

Navigateur Conteneur Applet

Serveur Mtier Conteneur EJB Bean Enterprise

Applet/ HTML

Application Web/JSP

Serveur de bases de donnes

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 20 / 52

Architecture J2EE

La plate-forme J2EE est constitue de quatre environnements de programmation baptiss containers :


le container EJB le container Web le container Application-Client le container Applet

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 21 / 52

Architecture J2EE - Conteneurs

Un conteneur J2EE est un environnement d'excution charg de grer des composants applicatifs et de donner accs aux API J2EE Conteneur Web
Servlets Java Servlets Java Servlets Java Clients Applicatifs RMI/IIOP JNDI JTA Pages JSP Pages PagesJSP JSP RMI/IIOP JavaMail JDBC JMS JAF

Conteneur EJB
Entreprise Entreprise Entreprise Java Beans Java JavaBeans Beans

JavaMail

JDBC

Serveur d'applications J2EE


BDDs et autres ressources
Deruelle Laurent Copyright 2002 Laurent Deruelle Module UV J2EE Page 22 / 52

JNDI

JMS

JAF

JTA

Le container Application-Client

Il fournit l environnement d excution des clients J2EE, comportant des interfaces bases sur JFC/Swing. Il s agit essentiellement de Java 2 Standard Edition (J2SE).

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 23 / 52

Le container Applet

Il permet l excution des Applets Java. Cet environnement est gnralement intgr au sein du navigateur Web.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 24 / 52

Le container Web

Il fournit un environnement pour le dveloppement, le dploiement et la gestion de l excution des Servlets et des JSP. Les Servlets et les JSP sont regroups dans des units de dploiement baptiss applications Web (webapp). Ils implmentent la logique de prsentation d une application.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 25 / 52

Architecture J2EE Conteneurs Web

API de services de conteneurs Conteneur Web


Servlets Java Servlets Java Servlets Java Pages JSP Pages JSP Pages JSP RMI/IIOP JavaMail JDBC JNDI

JMS

JAF

JTA

Interface des services Implmentation des services

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 26 / 52

Le container EJB

Environnement pour le dveloppement, le dploiement et la gestion de l excution des beans enterprise. Un bean enterprise est un composant qui implmente un processus et une entit mtier de l Entreprise.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 27 / 52

Architecture J2EE - Conteneurs

Quelques services du conteneur


Gestion de la dure de vie des composants applicatifs Cette gestion implique la cration de nouvelles instances de composants applicatifs ainsi que le pooling et la destruction de ces composants lorsque les instances ne sont plus ncessaires Pooling de ressources Les conteneurs peuvent l'occasion mettre en uvre le rassemblement des ressources, sous la forme, par exemple, de pooling d'objets ou de pooling de connections Peuplement de l'espace de noms JNDI avec les objets ncessaires l'utilisation des API de services des conteneurs Clustering sur plusieurs machines Rpartition de charge ou "Load Balancing" Scurit ... Module UV J2EE
Page 28 / 52

Deruelle Laurent Copyright 2002 Laurent Deruelle

Les conteneurs via Java RMI


Structure de rpertoire qui permet dobtenir des notions de transparence de la localisation des objets -- le code client utilise un nom pour trouver le serveur

Code Client
Client Stub rseau

Implmente les Factories en utilisant des descriptions des objets activables

Service Nommage

Daemon Activation

Server Skeleton

Une JVM par ActivationGroup. Automatiquement lance par le daemon dActivation et peut contenir des serveurs semi-indpendants qui partagent des ressources (comme un pool de connexions) et qui ont les mmes restrictions de scurit

Objet JVM Server associe au Groupe dActivation

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 29 / 52

Les containers via CORBA


Tous les containers comportent un ORB (Object Request Broker) compatible CORBA. Le protocole d change entre les containers EJB de nombreux diteurs repose sur CORBA, incluant RMI-IIOP et le service de transaction OTS. Certains serveurs dapplications peuvent ainsi autoriser :
laccs des objets C++ (COM+/DCOM ou standard) fonctionnant sur des machines htrognes. La connexion de diffrents serveurs dapplications bus CORBA htrognes et distribus

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 30 / 52

Les modles de composants

Un composant est un objet qui adhre un modle :


Support dun ensemble de mthodes normes pour :
tre excut dans un serveur dapplications, tre intgr dans un AGL en phase de dveloppement, grce aux mthodes auto descriptives (introspection).

Regroupement des mthodes normes dans des interfaces :


Le composant donne un descriptif de ses services, La description des services est indpendante de limplmentation.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 31 / 52

Les modles de composants

La structure du composant doit permettre un rel assemblage avec dautres composant, sans se soucier des implmentations. Le modle de composants apporte un ensemble dobjets et de mthodes afin de mieux grer les aspects transactionnels et de scurit.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 32 / 52

Les modles de composants

Deux modles (architectures) de composants se partagent le march :


Le modle COM (Component Object Model, 1996) de Microsoft, se veut indpendant du langage (VB, C++, C#, Visual J++, etc.) Le modle EJB (Enterprise JavaBean, 1998), spcification multi diteur (Sun et IBM lorigine), se veut multi plateforme et uniquement en langage Java.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 33 / 52

Le modle COM

Le modle COM dfinit un standard pour la communication des objets : assemblage de composants multi diteurs et multi langages. Il dsigne les services de base du broker dobjet. La technologie ActiveX a t dveloppe par dessus COM, pour dsigner :
les composants destins Internet, des contrles graphiques (OCX), et permettre le pilotage dapplication.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 34 / 52

Le modle COM+

Le modle COM+ est une volution de COM partir de Windows 2000. Il intgre de nouvelles fonctionnalits :
La gestion dvnement en mode publish et subscribe, des communications asynchrones et sres entre composants (MSMQ : Message Queuing 3.0), Les transactions distribues (MTS).

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 35 / 52

Architecture de composants COM/COM+

Du point de vue architecture de dploiement, les composants mtiers peuvent tre sollicits par :
des clients lourds via :
le protocole DCOM, Le protocole HTTP, au moyen dIIS.

Des clients lgers, tels que des pages HTML via les ASP.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 36 / 52

Le modle EJB

Le modle Enterprise JavaBeans est bas sur le concept Write Once, Run Everywhere pour les serveurs. Le modle EJB repose sur larchitecture en couches suivante :
LEJB Server contient lEJB Container et lui fournit les services de bas niveau. LEJB Container est lenvironnement dexcution des composants Enterprise JavaBeans (interface entre le bean et lextrieur). Les clients ne se connectent pas directement au bean, mais une reprsentation fournie par le conteneur. Celui-ci route les requtes vers le bean.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 37 / 52

Les services du container EJB

LEJB Container est responsable de la fourniture de services aux beans, quelque soit leurs implmentations :
Le support du mode transactionnel : spcifi lors de la dclaration du bean sans ajout de codes. La granularit pouvant descendre au niveau de la mthode. La gestion des multiples instances : les EJB sont dvelopps de faon mono-client et excute en mode multi-clients:
gestion de pool dinstances, gestion de cache, optimisation des accs ressources et donnes, etc.

La persistance (obligatoire dans la spcification EJB 2.0). La scurit par les ACL (Access Control List) au niveau du bean ou pour chaque mthode. Gestion de versions et administration des EJBs.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 38 / 52

Les beans enterprise du container EJB

Un Bean Enterprise (EJB ou beans) est un composant charg des oprations mtiers de l application. L architecture est dcoupe en quatre tches:
le dveloppement du bean enterprise, l assemblage de lEJB (JAR), le dploiement de lEJB dans un environnement d excution, l administration et la configuration de lEJB,

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 39 / 52

Les interactions entre composants

Un bean encapsule une partie de la logique mtier de lapplication et des rgles business. Ils rendent des services fonctionnels. Il communique gnralement avec des gestionnaires de ressources (SGBD). Les clients des beans sont :
d autres beans, des appplications Web, des servlets, des java beans, des applications classiques.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 40 / 52

Les rgles business

Les applications base dEJBs organisent les rgles business en composants :


une entit business reprsente les informations conserves par l Entreprise un processus business dfinit les interactions dun utilisateur avec des entits business.

Les rgles business peuvent tre extraites et places dans un moteur de rgles (systme expert, etc.), puis manipules via un EJB : nouvelles tendances.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 41 / 52

L entit business

Elle possde un tat, conserv en permanence (SGBD), modifi gnralement par les processus business. Exemple:
Une entit Commande encapsulera les donnes des commandes dun client avec ses rgles business (i.e. formatage du N de commande, vrification du compte du client, etc.)

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 42 / 52

Le processus business

Il modifie l tat des entits business, et possde son propre tat, souvent provisoire. Un processus business est ddi un acteur (utilisateur ou programme) qui engage une conversation avec le systme :
processus business conversationnel

Exemple :
une personne retirant de l argent un distributeur

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 43 / 52

Les types de beans Enterprise

Les entits et processus business sont implments au choix par trois types de beans :
les beans entit : crs pour vivre longtemps et tre partags par plusieurs clients, les beans session : crs en rponse aux requtes dun seul client. les beans orients messages

Les EJBs orients messages sont une classe part des EJBs et sont dfinis en relation avec lAPI Java Message Service

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 44 / 52

Cycle de vie dun EJB


Dfinir le type de lEJB :
Un EJB session, Un EJB Entit Un EJB message

Dvelopper le bean
Ecrire linterface Home et linterface Remote Implmenter les services du bean dans une classe

Dployer le bean sur un serveur dapplications


Crer une description du dploiement (souvent en XML) Nommer lEJB (souvent un JNDI name) Assembler lEJB dans un fichier jar (+ librairies, + classes utilitaires) Utiliser loutil de dploiement du serveur dapplications

Attendre que lEJB soit sollicit par une requte.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 45 / 52

Les beans et les transactions

Dans une application J2EE, on utilise des transactions pour :


combiner lenvoi et la rception de messages (JMS), Effectuer des mises jours de bases de donnes et Raliser dautres oprations de gestion de ressources (EAI).

Ces ressources peuvent tre accdes partir de multiples composants dapplication lintrieur dune mme transaction. Par exemple:
une servlet peut dmarrer une transaction pour accder de multiples bases de donnes, invoquer un enterprise bean qui envoi un message JMS, invoquer un autre enterprise bean pour modifier un ERP en utilisant l architecture J2EE Connector, et finalement faire un commit de la transaction.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 46 / 52

Les beans et les transactions

Les transactions distribues peuvent tre de deux types :


Container-managed transactions. Le conteneur EJB contrle lintgrit de vos transactions sans que vous deviez effectuer un commit ou un rollback.
Les CMT sont recommandes pour les applications J2EE qui utilisent JMS. Vous pouvez spcifier des attributs de transaction pour les mthodes des beans. Utiliser lattribut Required pour sassurer quune mthode fait partie dune transaction. Lorsquune transaction est en cours et quune mthode est appele, celle-ci sera incluse dans la transaction; si aucune transaction nest en cours, alors une nouvelle transaction sera dmarre avant lappel de la mthode et sera valide (commit) lorsque la mthode sera termine.

Bean-managed transactions. Elles permettent au bean de contrler finement les transactions via linterface javax.transaction.UserTransaction, permettant dutiliser ses propres mthodes de commit et de rollback afin de dlimiter les frontires des transactions.

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 47 / 52

Dvelopper des applications J2EE

Constitution de composants applicatifs en modules


Un module sert a empaqueter un ou plusieurs composants du mme type Lapplication J2EE est une archive EAR contenant le descripteur de dploiement (application.xml), les modules Web et EJB modules Web
Servlets, JSP, TagLibs, JARs, HTML, XML, Images... Empaquet dans un fichier d'archive web, WAR Un WAR s'apparente a un JAR avec en plus un rpertoire WEB-INF contenant le descripteur de dploiement web.xml

modules EJB
pour les EJB et leurs descripteurs de dploiement (ejb-jar.xml) contenus dans une archive JAR

modules Java
pour les clients Java, galement une archive JAR avec le descripteur de dploiement application-client.xml
Deruelle Laurent Copyright 2002 Laurent Deruelle Module UV J2EE Page 48 / 52

Dvelopper des applications J2EE

Constitution de modules en application


Niveau le plus accompli : celui des applications Appli J2EE = ensemble de modules places dans un fichier EAR (Entreprise Archive)

Appli J2EE (fichier EAR) application.xml Module EJB Module Web Module Java

Module EJB (fichier JAR)

Module Web (fichier WAR) web.xml Servlet JSP

Module Java (fichier JAR) application-client.xml Java Java

ejb-jar.xml EJB EJB

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 49 / 52

Dvelopper des applications J2EE

Dploiement d'applications
Le dploiement consiste installer et personnaliser des modules empaquets sur une plate-forme J2EE Deux tapes :
Prparation de l'appli (recopie des fichiers JAR, WAR, EAR..., gnration des classes au moyen du conteneur, puis installation de l'appli sur le serveur Configuration de l'application en utilisant les informations spcifiques au serveur d'applications
Cration de sources de donnes, fabriques de connexion...

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 50 / 52

Le serveur J2EE Sun


Tlcharger le Java 2 Standard Edition partir du site de Sun, pour bnficier de Java 1.4 Tlcharger le Java 2 Enterprise Edition partir du site de Sun, pour installer le serveur J2EE. Configurer correctement les paramtres du serveur J2EE Sun Lancer loutil j2ee.bat verbose pour dmarrer le serveur Dvelopper une application J2EE avec un IDE Lancer loutil deploytool.bat et effectuer lassemblage de lapplication Tester lapplication :
partir dune application cliente (mode intranet) partir dun navigateur web (mode Internet / Extranet)

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 51 / 52

Configuration du serveur J2EE Sun MicroSystem

Deruelle Laurent Copyright 2002 Laurent Deruelle

Module UV J2EE Page 52 / 52