Vous êtes sur la page 1sur 15

1

Architecture J2EE
5.1 Introduction
5.1.1 J2EE Objectifs
Faciliter le dveloppement de nouvelles applications base de composants
Intgration avec les systmes dinformation existants
Support pour les applications critiques de lentreprise
o Disponibilit, tolrance aux pannes, monte en charge, securit ...
5.1.2 Quest ce que la plateforme J2EE ?
Environnement Java
o langage objet
o simple
o portable
o robuste
o indpendant de larchitecture (code virtuel)
Pour serveurs dapplications rparties
o ensemble de services
o ensemble de protocoles de communication

5.2 Container J2EE
Environnement dexcution Java 2 permettant dhberger des composants applicatifs et de
contrler leur excution. Il existe deux types de container :
Container J2EE Web : utiliss pour hberger des servlets ou des pages JSP
Container J2EE EJB : supportant lexcution des composants EJB

5.2.1 Interface de Container
Un container offre des interfaces constituant le contrat de composant. Il gre :
des API de services : accs SGBD, annuaires, gestionnaire de transactions...
des API de communication : protocole Internet, envois de messages ou de mail, accs
des objets distants...
Composants dapplication :
Servlets, JSP, EJB.
Descripteurs de dploiement :
Fichier XML dcrivant le composant dapplication
Inclut des informations additionnelles requises par le container pour grer les
composants dapplication


2

5.2.2 Container



5.2.3 Intgration J2EE





3
5.3 Composants J2EE





4
5.3.1 API pour J2EE
Java Servlet 2.3 : services web
JSP 1.2 : prsentation des pages web
EJB 2.0 : les beans
JAF 1.0 : intgration des JavaBeans
JDBC 2.0 : accs aux bases de donnes
RMI-IIOP, RMI-JRMP, CORBA : accs et excution distants
JNDI 1.2 : gestion de noms et dannuaire
JMS 1.0 : gestion de messages
JTA/JTS 1.0 : gestion de transactions
JavaMail 1.2 : gestion du courrier lectronique
JAAS 1.0 : gestion de la scurit, authentification et droits daccs
JAXP 1.1 : gestion de documents XML

5.3.2 Java Servlet
5.3.2.1 Dfinition
programmation ct serveur
permet dtendre les fonctionnalit du serveurs web
gre le protocole HTTP
construire des applications Web plus performantes que les CGI
accde toutes les API des classes Java
ax sur la gnration du contenu
o les programmeurs ne se soucient pas de la prsentation
5.3.2.2 Cycle de vie dune servlet



5



5.3.2.3 API Servlet
import javax.servlet.*;
import javax.servlet.http.*;

5.3.2.4 Programmation des Servlets
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class Hello extends HttpServlet
{
public void doGet (HttpServletRequest requete, HttpServletResponse reponse)
throws ServletException, IOException
{
// Rcupre le flux dcriture pour la rponse
PrintWriter out = reponse.getWriter () ;
// Prpare la rponse
reponse.setContentType ("text/html");
// Rcupre ladresse IP du client
String adresseDistante = requete.getRemoteAddr () ;
// Imprime la page HTML
out.println("<html>") ;
out.println("<title>Bienvenue !</title> <body>")
out.println("<h1>Bonjour !</h1>") ;
out.println("Votre adresse IP est identifi&eacute; comme :<b>" + adresseDistante +
"</b>.") ;
out.println(</body></html>") ;
}
}

6

5.3.3 Java Server Page (JSP)
5.3.3.1 Dfinition
Sparation entre la prsentation et le contenu des pages web
Encapsul dans des pages HTML
Cration de contenu dynamique
Situ ct serveur
Ax sur la prsentation des donnes
Les webmasters ne se soucient pas de la programmation
Semblable HTML ou XML
bas sur des balises
Directives
Balise de dclaration <%! ... %>
Balise daffichage <%= ... %>
Balise de scriplet <% ... %>
Balise de directive <%@ ... %>
Balise daction <jsp : ... />

5.3.3.2 API JSP
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

5.3.3.3 Programmation JSP
<html>
<!-- Copyright (c) 1999 The Apache Software Foundation. All rights reserved.-->
<body bgcolor="white">
<! fixer les paramtres de la page
<%@ page language = JAVA session = false %>
<! dclarer une variable caractre
<% char c = 0 ; %>
<! scriptlet code Java
<%
for (int i =0 ; i < 26 ; i++) {
c = (char) (a) + i ;
%>
<! afficher c
<%= c %>
<% } %>
<jsp:useBean id='clock' scope='page' class='dates.JspCalendar'
type="dates.JspCalendar" />
<font size=4>
<ul>
<li> Jour du mois <jsp:getProperty name="clock" property="dayOfMonth"/> </li>
<li> anne <jsp:getProperty name="clock" property="year"/> </li>
<li> mois <jsp:getProperty name="clock" property="month"/> </li>
<li> temps <jsp:getProperty name="clock" property="time"/> </li>
</ul>
</font>
</body>
</html>

7


5.3.4 Enterprise Java Beans (EJB)
5.3.4.1 Dfinition
Modle client/serveur distribu
Code excut sur le serveur
proche des donnes
serveur souvent plus puissant que le client
Code localis sur le serveur
changer le code du serveur ne change pas le code du client
Un EJB est juste une collection de classes Java et dun fichier XML. Les classes Java
suivent un certains nombre de rgles et fournissent des callbacks comme dfinis dans
lenvironnement J2EE et les spcifications EJB.

5.3.4.2 Container EJB
Un container EJB est un environnement dexcution pour un composant EJB.
Un EJB sexcute sur un container EJB.
Un container EJB sexcute par un serveur dapplications et prend la responsabilit
des problmes au niveau systme
Le container EJB gre le cycle de vie de lEJB.
Le container EJB fournit aussi un nombre de services additionnels
Gestion de la persistance
Transactions
Scurit
Cadre de travail pour Business Logic
Dimensionnement
Portabilit
Gestion des erreurs

5.3.4.3 Beans entit
Un bean entit est un objet persistant
Un bean entit peut avoir plusieurs clients
Bean Managed Persistance (BMP) : le container EJB est responsable de la
persistance du bean.
Container Manager Persistance (CMP) : le bean est responsable de sa propre
persistance.

5.3.4.4 Beans session
Un bean session pour chaque client
Il y a deux types de beans session
sans tat
pas d tat entre les invocations
rapide et efficace
avec tat
maintient les tats entre les invocations
persistance limite
5.3.4.5 Structure EJB
Interface home
fournit un moyen pour le client EJB de rcuprer une instance dun EJB
Interface distante

8
expose les mthodes que le client EJB peut utiliser
Code EJB
implmente linterface distante et linterface EJB appropri (SessionBean ou
EntityBean par exemple)

5.3.4.6 API EJB
import javax.ejb.* ;
import javax.ejb.spi.* ;

5.3.4.7 Programmation EJB


5.3.5 JavaBeans Activation Framework (JAF)
Les services dactivation sont des composants fondamentaux utiliss pour activer
automatiquement des objets en mmoire ltat dormant suivant une requte cliente
JAF est un cadre de travail pour construire des applications qui peuvent activer
automatiquement des objets pouvant manipuler des donnes reues dans un flux
dentre

5.3.6 Java Data Base Connectivity (JDBC)
JDBC permet aux applications daccder des SGBD relationnels et de manipuler des
donnes provenant de ces bases
API Java
Calqu sur ODBC de Microsoft

9
Implmente le standard CLI de lX/OPEN

5.3.7 RMI-IIOP, RMI-JRMP, CORBA
RMI et CORBA sont des architectures complexes permettant dinvoquer un objet
distant gr par une autre machine virtuelle comme sil tait local.
CORBA : gnrique langage objets
RMI : spcifique Java

5.3.8 Java Naming and Directory Interface (JNDI)
JNDI permet daccder de nombreux services de noms et dannuaire.
En utilisant JNDI, un objet Java peut stocker et rcuprer des objets de nimporte quel
type
JNDI fournit des mthodes pour effectuer nimporte quelle opration standard sur un
annuaire : associer des attributs un objet ou chercher un objet par ses attributs.
JNDI permet aux applications Java de bnficier de toutes les informations
dannuaires comme LDAP, NDS, DNS et NIS (YP) et permet Java de cohabiter avec
des applications existantes.
Enregistrement dynamique de services et de clients
Traitement point point

5.3.9 Java Message Service (JMS)
JMS dfini un mcanisme standard permettant aux composants denvoyer et de
recevoir des messages de faon asynchrone
Fournit un service flexible et sr pour lchange asynchrone de donnes et
dvnements commerciaux critiques travers une entreprise
LAPI JMS y ajoute une API commune et un cadre de travail permettant le
dveloppement de messages portables bass en Java
Synchrone
envoy une fois, non garanti datteindre le serveur
perdu si non reu
Asynchrone
Envoy jusqu acquittement
Mise en file dattente jusqu ce que le message soit reu


10


5.3.10 Java Transaction Support/API (JTS/JTA)
JTA et JTS permettent aux applications J2EE daffranchir le dveloppeur de
composant de la gestion des transactions
Les dveloppeurs peuvent dfinir les proprits transactionnelles des composants
JavaBeans pendant la conception et le dploiement laide dtats dclaratifs dans le
descripteur de dploiement.
Le serveur dapplications prend la responsabilit de la gestion des transactions

5.3.10.1 Exemple de droulement de transaction
begin transaction
...
update table-a
...
if (condition-x)
commit transaction
else if (condition-y)
update table-b
commit transaction
else
rollback transaction
begin transaction
update table-c
commit transaction

5.3.10.2 API JTA

import javax.transaction ;
import javax.transaction.xa ;

5.3.10.3 Programmation JTA

11


5.3.11 JavaMail
JavaMail 1.2 dfinit un ensemble dinterface de classe permettant de construire des
applications sur les technologies de courrier lectronique
Gestion des standards de courrier
SMTP : protocole de transport de courrier lectronique
POP : rcupration du courrier sur serveur distant
IMAP : gestion de botes aux lettres distantes
MIME : standard de codage du contenu de courrier permettant notamment
lattachement de documents de tout format et lutilisation de langues
diffrentes

5.3.12 Java Authentification and Authorization Service (JAAS)
Authentification : dterminer qui excute le code Java (application, applet, bean,
servlet)
Autorisation : vrifier si celui qui excute le programme a les permissions ncessaires
pour le faire
Modules dauthentification disponibles
JNDI
UNIX
Windows NT
Kerberos
KeyStore

5.3.13 Java API for XML Processing (JAXP)
SAX : gestion de flux dvnements XML
DOM : structure de document XML en mmoire sous forme darbre
XSLT : prsentation de documents XML daprs des feuilles de style XSL

12

5.4 Outils de dveloppement et dintgration
5.4.1 J2EE SDK
J2EE SDK est une dfinition oprationnelle de la plateforme J2EE
Fait par Sun Microsystem pour les dmonstrations, les prototypes et les applications
non-commerciales
Contient :
J2EE Application Server
Serveur Web
Base de donnes relationnelles
API J2EE
un kit de dveloppement et de dploiement
But : permettre aux dveloppeurs dexcuter leurs applications J2EE et vrifier leur
compatibilit

5.4.2 Dploiement J2EE
JAR Java ARchive
Fichier classe Java
EJB
WAR - Web ARchive
Servlets
JSP
EAR - Enterprise ARchive
Contient des JARs et WARs pour former une application complte
Descripteurs de dploiement
XML

5.5 Produits existants
5.5.1 Serveurs J2EE
Apache Tomcat, http://jakarta.apache.org/
BEA WebLogic, http://www.bea.com/
IBM WebSphere
Sun iPlanet Application Server http://java.sun.com/
Oracle Application Server http://www.oracle.com
Caucho Resin, http://www.caucho.com/
Allaire JRun, http://www.allaire.com/
Orion, http://www.orionserver.com/
SilverStream Application Server

13


5.6 Exemple dapplication en entreprise
5.6.1 Exemple 1


5.6.2 Exemple 2

14


5.6.3 Exemple 3



















15

J2EE et applications Web (1/3)
Spci_cations J2EE
J2EE fournit les lments pour la conception d'applications Web
servlets Java et JSP
I Les servlets et JSP constituent les blocs de construction du
dveloppement d'applications web avec J2EE
I En terme J2EE, les servlets et pages JSP sont des composants web
application web
I Collection de servlets et de pages JSP, d'autres classes annexes ou de
bibliothques de classes, ainsi que des ressources statiques telles que
des documents HTML, XHTML ou XML, images, etc.
conteneur web
I Essentiellement un environnement d'excution Java pour les
applications web
I Responsable de l'initialisation, de l'invocation et de la gestion de la
dure de vie des servlets Java et des pages JSP
Architecture multitiers
Client
Lger (Web, browser)
Lourd (Application java, Applet)
Architecture oriente service (Application
rpartie sans prsentation)
Serveur d applications
Conteneur EJB + logique mtier
Services non fonctionnels
EIS ou Base de donnes