79
JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Embed Size (px)

Citation preview

Page 1: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

JEE

Java Enterprise Edition

Riadh Ouersighni

Maître de Conférence en Informatique

Isitcom - 20101

Page 2: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Pédagogie du cours Pré-requis:

POO java, Architecture Répartie (Java RMI), COO, UML, Web, Design Pattern MVC,

Cours : Présentation des concepts, technologies, API,

frameworks du J2EE pour le développement d’application distribuée

TD Etude de cas Architecture Logiciel TP

Illustration des concepts vus en cours par des exemples pratiques

Environnement de Développement J2EE Utilisation de frameworks (struts, hibernate, spring, etc.) Etudes de cas

2

Page 3: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Introduction J2EE

1998 : La plateforme J2EE (Java 2 Entreprise Edition) est née de besoins grandissant des entreprises pour développer des applications complexes distribuées et ouvertes sur l ’Internet, le mobile, etc.

Définie par Sun MicroSystems, basée sur Java Site officiel (anciennement java.sun.com )

http://www.oracle.com/technetwork/java/index.html J2EE est le terme utilisé dans les versions avant 2005

(JDK 1.4 ou antérieur) J2SE (Java 2 Standard Edition) fournit le langage et

la plateforme java sur lesquels est bâti J2EE J2ME (Java 2 Micro Edition) pour les terminaux

mobiles

3

Page 4: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Introduction Java EE

Depuis la sortie de la version 5 (en 2005, JDK 1.5), Le terme J2EE a été remplacé par Java EE

Actuellement (en 2010) Java EE 6

Autres éditons : Java SE 7 (Standard Edition) Java ME 3.0 (Micro Edition) Java FX 1.3 plateforme pour la création

d’application RIA (Rich Internet Application) basé sur le langage Java FX Script

4

Page 5: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Qu’est ce que le Java EE (ou J2EE)

La Plateforme JEE désigne les technologies Java utilisées pour le développement d'applications «d’entreprise » distribuées (Répartie, multi-couches, n-tiers)

JEE est une plate-forme fortement orientée serveur. Elle est composée de deux parties essentielles :1. un ensemble de spécifications pour une infrastructure dans

laquelle s'exécutent les composants écrits en Java : un tel environnement se nomme serveur d'application.

2. un ensemble d'API qui peuvent être obtenu et utilisé séparément.

5

Page 6: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Qu’est ce que le JEE

Un ensemble de spécifications d’API, une architecture distribuée et une méthode de packaging et de déploiement des composants.

C’est une collection de composants, de conteneurs et de services mis à disposition des applications permettant de créer et de déployer des applications distribuées au sein d’une architecture standardisée

6

Page 7: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Objectifs Concevoir une infrastructure d’application distribuée

n’est pas une mince affaire

Un des objectifs du JEE : faciliter la vie des développeurs en permettant l’encapsulation de la complexité inhérente aux environnements distribués.

Les développeurs se concentrent uniquement sur l’aspect logique (métier) des données et de leurs processus et ne pas perdre du temps à coder l’aspect technique de leurs activités: Threading, transactions, sécurité, maintenance, échange de données entre systèmes et compatibilité, etc.

7

Page 8: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Architectures distribuées Les applications à architectures distribuées

sont des applications dont les fonctions sont réparties entre plusieurs systèmes. On les appelle aussi architectures multi-tiers (ou multi-couches)

Chaque système contient une partie de l’application, les parties manquantes sont exécutées sur les autres systèmes participants à l’application et les informations sont échangées par le réseau

8

Page 9: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Architecture distribuée

Une application est composée de 3 couches fondamentales:

Couche de présentation–interface utilisateur...–Présenter les données à l’utilisateur

Couche Applicative / Logique métier :–validation et traitement des données–modélisation des processus métiers

(règles métier) Couche d’accès de données / Persistence

9

Page 10: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Architecture distribuée Architecture simple tiers (monolithique, un seul

poste) Architecture 2 tiers ou client-serveur Architecture 3 tiers Architectures n-tiers (multiplication du nombre

de couches fonctionnelles de plus en plus fines)

On impose pas que toutes les couches d’une application fonctionnent sur des machines différentes

Séparation logique fonctionnelle OU séparation physique des couches ?

10

Page 11: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Répartition des fonctions1. sur la couche présentation, une application cliente est

chargée de l’affichage et de la saisie des données Client web léger, Application java client ou applets

(RMI), Application client CORBA (IIOP )2. sur la couche application, un serveur d’application

maintient des composants métiers utilisés pour modéliser sous forme d’objet les processus de l’application Serveurs de: présentation, outils métiers, servlets,JSP , EJB

3. sur la couche données, les serveurs du système d’information d’entreprise stockent les composants métiers bases de données relationnelles ou objets, intégrés

(ERP), annuaires d’entreprise LDAP,…

IIOP : l’Internet Inter-Orb Protocol (IIOP) utilisé pour transmettre des objets sur le réseau.RMI : Remote Method Invocation..de java

11

Page 12: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

12

Répartition des fonctions

La division du logiciel en plusieurs couches facilite la maintenance des applications et leurs permet de mieux s’adapter par exemple à une montée en charge

Page 13: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Exemple Répartition en couches : Cas du 3 Tiers Considérons une architecture courante, celle à trois niveaux:

La couche [1], (User Interface) : dialogue avec l'utilisateur, via une interface. Elle a pour rôle de fournir des données provenant de l'utilisateur à la couche [2] ou bien de présenter à l'utilisateur des données fournies par la couche [2].

La couche [2], appelée ici [Métier] est la couche qui applique les règles dites métier, c.a.d. la logique spécifique de l'application, sans se préoccuper de savoir d'où viennent les données qu'on lui donne, ni où vont les résultats qu'elle produit.

La couche [3], appelée ici [dao] (Data Access Object) est la couche qui fournit à la couche [2] des données pré-enregistrées et qui enregistre certains des résultats fournis par la couche [2].

Couche Interfaceutilisateur Couche Métier

Couche d’accès aux données

(DAO)Données

1 2 3

13

Page 14: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Exemple : Couche accès aux données

utilisateur

Il existe différentes possibilités pour implémenter la couche accès aux données. Le développeur peut diviser en tiers dotés de fonctionnalités spécifiques

La couche [JDBC] est la couche standard utilisée en Java pour accéder à des bases de données. Elle isole la couche [dao] du SGBD qui gère la base de données. On peut théoriquement changer de SGBD sans changer le code de la couche [dao].

14

Couche Interface

Couche Métier

Couche d’accès aux

données (DAO)

1 2 3

Couche JDBC

Base de données

Page 15: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Couche

Hibernate

Objets image de la BD

Couche d’accès aux

données (DAO)

Couche JDBC

BD

Pour isoler la couche [dao] des aspects propriétaires des SGBD. Une solution est celle du Framework Hibernate ou (JPA, TopLink dans JEE)

La couche [Hibernate] vient se placer entre la couche [dao] écrite par le développeur et la couche [Jdbc]

Hibernate est un ORM (Object Relational Mapping), un outil qui fait le pont entre le modèle relationnel des bases de données et celui des objets manipulés par Java

Le développeur ne voit plus la couche [Jdbc] ni les tables de la BD. Il ne voit que l'image objet de BD, fournie par la couche [Hibernate]. Le pont entre les tables de la BD et les objets manipulés par la couche [dao] est fait principalement de deux façons :• par des fichiers de configuration de type XML• par des annotations Java dans le code, technique disponible depuis le JDK 1.5

15

Suite Exemple : Couche accès aux données

Page 16: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Framework

Il existe des frameworks pour lier ces couches entre-elles. Par exemple Spring

Le grand intérêt de Spring est qu'il permet de lier les couches par configuration et non dans le code

Avec Java EE , une autre solution existe : implémenter les couches [metier] et [dao] avec des Ejb3 (Enterprise Java Bean 3)

16

Page 17: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Programmation par composants 1/2 Limites de la programmation usuelle plus adaptée à la programmation de “petits projets”

(programming in the small) tout est à la charge du programmeur:

la liaison entre les différentes couches de l’application (présentation, application, données),

construction des objets utilisées sur les couches, la structure de l’application est peu visible et particulière à

chaque application ( pas de généricité) l’évolution de l’application est difficile: ajout de fonctionnalités,

modification des conditions d’installation, changement de la BD le développement, la génération des exécutables et leur

déploiement ne sont pas standardisés

17

Page 18: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Programmation par composants 2/2 Programmation par composition (ou constructive)

Elle est motivée par la réutilisation des logiciels déjà existants et propose de créer des applications réparties par assemblage de composants logiciels existants.

C’est le concept du “programming in the large” où l’on définit des composants génériques qui sont ensuite réutilisables dans plusieurs applications.

18

Page 19: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Composants Un composant est un module logiciel autonome,

configurable et installable sur plusieurs plates-formes.

Un composant: exporte des attributs, propriétés et méthodes, peut être configurable

Les composants sont les briques de bases configurables d’une application par composition.

Parmi les différentes technologies de composants on peut citer : JavaBeans, Enterprise Java Beans, composants CORBA Etc.

19

Page 20: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Construction d’application par assemblage de composants

La création d’une application par assemblage de composants se distingue de l’ingénierie de développement classique car elle permet de: réduire les besoins en compétences

techniques focaliser l’expertise sur les problèmes du

domaine (logique métier) Réduire les coûts de développement et de

maintenance

20

Page 21: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Principes de JEE (1/3) L’architecture JEE est une architecture d’application

distribuée à base de composants. Ces composants sont mis en œuvre par l’intermédiaire des conteneurs

21

ConteneurEJB

ComposantMétierBean

Serveur debases dedonnées

ConteneurApplet

Composant Client Applet/

Html/wml

Conteneur Web

Composant Web Servlet/JSP

Internet

Tiers Interface Tiers Services Web

Tiers Données

Tiers Métier

Serveur d’applicationServeur Web

Navigateur

Exemple Composants d’une application Web J2EE

Page 22: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

22

Page 23: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Composants J2EE

Un composant est une unité logicielle de niveau applicatif.

JEE supporte les types de composants suivants : applets, application clientes, JavaBeans composants Enterprise JavaBeans (EJB), composants Web, composants adaptateurs de ressource etc

23

Page 24: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Les conteneurs JEE Eléments fondamentaux de l’architecture JEE

Les conteneurs JEE fournissent une interface parfaitement définie ainsi qu’un ensemble de services permettant aux développeurs de se concentrer sur la logique métier.

Les conteneurs et serveurs implémentent les services et mécanismes de bas niveau utilisés par les applications: La communication entre les clients et les serveurs Le contrôle de la sécurité La gestion des transactions L’identification et la localisation des ressources

24

Page 25: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Conteneurs JEE Les conteneurs et serveurs implémentent les

mécanismes de bas niveau utilisés par les applications: transactions, persistance, gestion de la mémoire, sécurité

Les spécifications J2EE s’intéressent aux activités d’une application liées: au développement, au déploiement, à l’exécution

25

Page 26: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

26

JEE 4 types de Conteneur

Conteneurd'applet

Java SE

Conteneurd'applet

Java SE

AppletApplet

Conteneurdu client de l'application

Java SE

Conteneurdu client de l'application

Java SE

Client de l'application

Client de l'application

JM

S

JA

VA

JA

XP

JD

BC

Conteneur Web

Java SE

Conteneur Web

Java SE

JM

S

JA

VA

JT

A

JavaMail

JSPJSP ServletServlet

JAF

JA

XP

JD

BC

JC

X

Conteneur d'EJB

Java SE

Conteneur d'EJB

Java SE

JM

S

JA

VA

JT

A

JavaMail

EJBEJB

JAF

JA

XP

JD

BC

JC

X

Base de donnéesBase de données

Couche client

Couche Web Couche métier

Couche SI

Page 27: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Clients JEE La plateforme JEE prévoit que plusieurs types de clients

puissent accéder à une même application et interagir avec les mêmes composants côté serveur:

JEE peut supporter de nombreux types de clients: Web, WAP, stations de travails, téléphones portables, PDA

27

Page 28: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Clients JEE Client web (léger) Client web RIA (Rich Internet Application) : Applets,

Java Web Start, AJAX, Google Web Toolkit, Flex, JavaFX (autres version JavaFx pour mobile et pour TV)

Client lourd : des applications clientes s'exécutent dans leur propre conteneur client. Les applications clientes ont des interfaces utilisateurs qui peuvent directement interagir avec le tier EJB en utilisant RMI-IIOP (Remote Methode Invocation over Internet Inter-Orb Protocol) ou encore application C++ utilisant CORBA.

Clients sans fil (J2ME pour les dispositifs sans fil). WAP (Wireless Application Protocol) , wml (Wireless Markup Language) 28

Page 29: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Composants web Un composant web est une entité logicielle qui fournit

une réponse à une requête.

Les composants web génèrent habituellement l'interface utilisateur d'une application web.

La plate-forme JEE définit deux types de composants web : les servlets ; les JavaServer Pages (JSP). JSF (Java Server Face)

29

Page 30: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Servlets (1/2) Une « servlet » est un composant qui étend les

fonctionnalités d'un serveur web de manière portable et efficace.

Un serveur web héberge des classes Java servlets qui sont exécutées à l'intérieur du conteneur web. Le serveur web associe une ou plusieurs URLs à chaque servlet et lorsque ces URLs sont appelées via une requête HTTP de l'utilisateur la servlet est déclenchée.

Quand la servlet reçoit une requête du client, elle génère une réponse, éventuellement en utilisant la logique métier contenue dans des EJBs classes javaBeans. Elle retourne alors une réponse HTML ou selon le client (XML, WML, javascript, ...)

30

Page 31: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Servlets (2/2)

Un développeur de servlet utilise l'API servlet pour : Initialiser et finaliser la servlet Accéder à l'environnement de la servlet Recevoir ou rediriger les requêtes et envoyer les

réponses Interagir avec d'autres servlets ou composants Maintenir les informations de sessions du client Filtrer avant ou après traitement les requêtes et

les réponses Implémenter la sécurité sur le tiers web

31

Page 32: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Java Server Pages La technologie JavaServer Pages (JSP) fournit un moyen simple et

extensible pour générer du contenu dynamique pour le client web.

Une page JSP contient : Des informations de formatage (modèle) du document web,

habituellement en HTML ou XML. Les concepteurs web peuvent modifier cette partie de la page

sans affecter les parties dynamiques. Cette approche permet de séparer la présentation du contenu dynamique.

Des éléments JSP et de script pour générer le contenu dynamique du document Web. La plupart des pages JSP utilisent aussi des JavaBeans et/ou

des Enterprise JavaBeans pour réaliser les opérations complexes de l'application. Les JSP permettent en standard d'instancier des beans, de modifier ou lire leurs attributs et de télécharger des applets.

La technologie JSP est extensible en utilisant des balises personnalisées qui peuvent être encapsulées dans des bibliothèques de balises personnalisées (taglibs)

32

Page 33: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Conteneur de composants web Les composants web sont hébergés dans des conteneurs de

servlets, conteneurs de JSP et conteneurs web (moteurs de servlets/jsp).

En sus des fonctionnalités normales d'un conteneur de composants, un conteneur de servlets (servlets container) fournit les services réseaux par lesquels les requêtes et réponses sont émises.

Il décode également les requêtes et formate les réponses dans le format approprié.

Tous les conteneurs de servlets doivent supporter le protocole HTTP et peuvent aussi supporter le protocole HTTPS.

Un conteneur de JSP (JSP container) fournit les mêmes services qu'un conteneur de servlets.

Ces conteneurs sont généralement appelés conteneurs web (Web containers).

33

Page 34: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Composants Enterprise JavaBeans

Les EJB : un des points forts du J2EE, c’est la pièce maitresse de la plateforme Java EE

L'architecture Enterprise JavaBeans est une technologie côté serveur pour développer et déployer des composants java contenant la logique métier d'une application d'entreprise.

Le conteneur EJB charge les composants à la demande et invoque les méthodes en appliquant les règles de sécurité et en contrôlant les transactions

A ne pas confondre avec les classes Java Beans

34

Page 35: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

EJB

EJB offre une gamme de services implicites Gestion du cycle de vie (session) Gestion de l’état Sécurité Transactions Persistance Localisation des composants transparente

(comparable à objets distribués RMI, CORBA) Répartition de charge

=> Le développeur se focalise sur les aspects métier

35

Page 36: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Les API Java EE

36

API Rôle

Entreprise Java Bean (EJB)

Servlets et JSP Contenu web dynamique

RMI (Remote Method Invocation) et RMI-IIOP

objet Java distribué. RMI-IIOP est une extension de RMI pour utiliser avec CORBA.

JNDIJava Naming and Directory Interface

Accès aux services de nommage et auxannuaires d'entreprises, LDAP

JDBC (Java Database Connectivity) Accès aux bases de données. J2EEintègre une extension de cette API

Java Transaction API (JTA)Java Transaction Service (JTS)

Support des transactions

Java Messaging service (JMS) Support de messages via des MOM(Messages Oriented Middleware)

JavaMail Envoie et réception d'email

JPA Java Persistence API

un ensemble d'API qui peuvent être obtenu et utilisé séparément.

Page 37: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

37

API Rôle

JSF (Java Server Faces) API pour le développement d'applications web (Interface graphique riche) avec JSP, la JSTL (JavaServer Pages Standard Tag Library) Swing, Ajax, WML

Java API for XML Parsing (JAXP) Analyse et exploitation de données auformat XML

Java Authentication and AuthorizationService (JAAS)

Echange sécurisé de données

Java API for XML-based RPC(JAXP-RPC)

API XML

SOAP with Attachments API for Java(SAAJ)

Web services

J2EE Connector Architecture (JCA) Connecteurs pour accéder à desressources du système d'information del'entreprises ERP ou progiciel intégré

Java IDL Utilisation de CORBA

Les API Java EE

Page 38: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Technologies J2EE

38

Page 39: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Technologies J2EE (1/2) La plate-forme J2EE comme la plate-forme J2SE incluent un grand nombre de

bibliothèques de code (API) prédéfinies pour les fonctions de base d'une application.

Les technologies mies en œuvre sont les suivantes : L'architecture J2EE Connector est l'infrastructure pour interagir avec une grande variété

de systèmes d'information d'entreprise tels que des ERPs, des CRM, et autres progiciels.

L'API JDBC est utilisée pour accéder à des données relationnelles à partir de programmes Java

La Java Transaction API (JTA) est utilisée pour gérer et coordonner les transactions entre un ensemble hétérogène de systèmes d'information d'entreprise.

L'API Java Naming and Directory Interface est utilisée pour accéder aux services de nommage et d'annuaire de l'entreprise.

L'API Java Message Service (JMS) est utilisée pour émettre et recevoir des messages via les systèmes de messagerie d'entreprise comme IBM MQ Series ou TIBCO Rendezvous. Dans l'architecture J2EE les Message Driven Beans fournissent une approche à base de composant pour encapsuler les fonctionnalités de messagerie.

La JavaMail API est utilisée pour émettre et recevoir des mails. Java IDL est utilisée pour appeler des services CORBA L'API Java pour XML (JAXP) est utilisée pour l'intégration avec les systèmes et

applications existants et pour implémenter les web services dans la plate-forme J2EE.

39

Page 40: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Le Design Pattern MVC

Le design pattern Modèle–vue–Contrôleur permet d’organiser une application en 3 composants principaux. le Modèle correspond aux données de l’application

(récupérées suite à l’ invocations des EJB, JavaBeans) la Vue est la présentation visuelle de l’application (JSP,

Html) le Contrôleur, qui définit l’état de la vue en fonction des

données gérées par le modèle (Les Servlets). Traitement des requête du client, choix de l’opération à executer,etc

C’est une architecture logiciel : découpages et organisation des fonctionnalités de l’application selon des rôles bien définis

40

Page 41: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

JavaBeans

Il est possible d’utiliser la technologie JavaBeans (package Beans.*) entre une page JSP et un beans pour obtenir une meilleure séparation entre Modèle, Vue et Contrôleur (Model View Controller – MVC).

41

Page 42: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Servlets

Les servlets sont des classes Java exécutées par le serveur web en réponse à une requête du client (en utilisant le protocole http).

Les servlets sont définies dans les packages suivants: javax.servlet, contient les classes génériques

(indépendantes du protocole) des servlets. La classe HTTPServlet utilise la classe ServletException de ce package pour indiquer un problème de servlet.

javax.servlet.http, contient la classe de serlvet concue pour le protocole HTTP (classe HttpServlet).

En général les servlets utilisent aussi le package java.io pour les entrées/sorties système.

La classe HttpServlet utilise la classe IOException de ce package pour signaler les erreurs d'entrée-sortie.

42

Page 43: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Java Server Pages La technologie JavaServer Page (JSP) permet de mettre des

fragments de code java dans une page HTML statique. Lorsque la page JSP est chargée, le code java est exécuté sur

le serveur. Celui-ci crée une servlet correspondante, qui est ensuite compilée et exécutée en tâche de fond.

La servlet retourne une page HTML ou un rapport en XML qui peut alors être transmis au client ou subir d’autres traitements.

Les JSP sont définies dans une classe d'implémentation appelée le package

Une page JSP est un document texte qui décrit comment créer un objet réponse (response) à partir d’un objet requête (request) pour un protocole donné.

Le traitement d’une page JSP peut entraîner la création et/ou l’utilisation d’autres objets.

Le protocole HTTP est le protocole utilisé par défaut.

43

Page 44: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Composants Enterprise JavaBeans (2/3) Il y a 3 types d'entreprise beans : les beans de sessions, d'entité et de

messages.

Les beans de session et d'entité comportent 2 interfaces : une interface de composant et une interface home.

L'interface home définit les méthodes pour créer, trouver, supprimer et accéder aux méta-données d'un beans.

L'interface de composant définit les méthodes métiers du beans.

Le beans à message n'ont pas d'interfaces home et composant.

Les interfaces composant et home d'un beans sont locales ou distantes.

44

Page 45: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Composants Enterprise JavaBeans (3/3) Les interfaces distantes (remote interface) sont des interfaces RMI qui

permettent au client du beans d'être situé n'importe où. Dans ce cas les arguments et valeurs de retour communiquées entre le client et le beans distant sont sérialisées pour être transportées sur le réseau, ce qui consomme des ressources.

Les interfaces locales impliquent que les clients du beans soient localisés dans la même machine virtuelle que le beans. Dans ces cas les arguments et valeurs de retours échangés sont transmis par référence. Cette méthode est plus performante que la méthode distante.

La section suivante donne un aperçu des composants EJB. Ils sont décrits en détail dans la suite du document.

45

Page 46: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Composants, conteneurs et services Les conteneurs fournissent aux composants un accès aux APIs du J2SE, ce

qui inclut l'accès aux APIs Java IDL et JDBC 2.0 core.

Le tableau suivant résume les APIs accessibles en fonction du type de conteneur.

46

Page 47: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Enterprise Java Beans (1/2)

Le terme Enterprise Java Bean recouvre deux notions: c’est le nom générique d’une architecture permettant la programmation répartie en

Java c’est le nom de composants exécutés sur un serveur et appelés par un client distant

Les EJBs n’ont en commun que le nom avec les Java Beans traditionnels, qui sont des composants côté clients utilisés pour obtenir une meilleurs séparation suivant le modèle MVC ( model – view – controller).

Les Enterprise Java Beans ont pour but de rendre les applications faciles à développer, à déployer et à administrer.

Les EJBs sont indépendants de la plate-forme d’exécution, étant écrits en Java: le déploiement d’un EJB se fait sans recompilation ni modification du code-source.

Les spécifications EJB définissent une architecture pour la construction d’applications Java dont la partie serveur est construite à partir de composants Enterprise Beans.

47

Page 48: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Enterprise Java Beans (2/2)

Leurs caractéristiques principales sont les suivantes: les composants EB sont “écrits une fois, exécutable partout” (write once,

run anywhere) ces composants sont des composants côtés serveur (analogues aux objets

métiers de CORBA)

Les EJBs ne sont pas les seuls composants exploités dans une application J2EE mais ils en sont la partie centrale.

Les EJBs résident sur le serveur d'EJB. Leurs méthodes sont accessibles aux clients (tiers web, application

autonome) en utilisant l'interface distante home du beans. Cette interface décrit les méthodes du beans (paramètres…) et permet

au client de les appeler. Lorsqu'une méthode est déclenchée, l'appel est enveloppé dans un

message RMI transmis au serveur d'EJB, qui exécute alors la méthode de l'ÉB et retourne le résultat au client dans un autre message RMI.

48

Page 49: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Considérations sur les réseaux

Les clients J2EE peuvent être connectés par de nombreux types de réseaux.

La qualité de service sur ces réseaux peut varier considérablement, suivant le type de liaison (débit, connexion permanente ou intermittente).

Trois aspects du réseau impactent le développement de la partie cliente : le temps de latence du réseau n’est pas nulle, la bande passante n’est pas infinie, le réseau n’est pas toujours fiable.

Une application bien conçue prend en compte ces problèmes et leur apporte des solutions.

Le client idéale connecte au serveur uniquement lorsque c’est nécessaire, transmets le minimum de données et se comporte raisonnablement bien lorsque la connexion avec le serveur est rompue.

49

Page 50: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Considérations sur la sécurité

Chaque type de réseau comporte des mesures de sécurité différentes, qui limitent la façon dont se connectent les clients.

Par exemple lorsque les clients se connectent par Internet, les communications transitent souvent par un firewall qui filtre laisse passer uniquement certains types de protocoles.

La plupart des firewalls sont configurés pour laisser passer le protocole hypertexte (HTTP) mais pas l’Internet Inter-Orb Protocol (IIOP) utilisé pour transmettre des objets sur le réseau.

Cet aspect incite à utiliser HTTP et non des services comme CORBA ou RMI qui utilisent le protocole IIOP pour le transport des données.

Les contraintes de sécurité affectent aussi l’identification des utilisateurs: quand le client et le serveur sont dans le même domaine de sécurité,

comme cela peut être le cas dans une application intranet, l’authentification peut être très simple et utiliser le système d’authentification de l’entreprise

dans le cas d’une application Internet les mécanismes à mettre en place sont nettement plus sophistiqués. L’architecture J2EE propose des mécanismes standards pour l’authentification.

IIOP : Internet Inter-Orb Protocol (RMI over IIOP)

CORBA : Common Object Request Broker 50

Page 51: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Considérations sur la plate-forme d’exécution du client

Chaque plate-forme cliente à des capacités propres qui influencent la conception de l’application.

Par exemple un navigateur ne peut pas générer des graphiques et a besoin d’un serveur pour obtenir les graphiques sous forme d’images téléchargées à partir du serveur.

Un client programmable peut télécharger uniquement les données numériques et construire lui-même un graphique.

Une autre chose à prendre en compte est la prise en charge des formulaires par le client, qui varie suivant le type de terminal (grands écrans, souris et clavier sur une station de travail, petits écrans et boutons pour des téléphones portables…), et qui impose des limitations à la quantité de données manipulée par l’utilisateur sur son terminal.

Une application qui gère plusieurs types de plates-formes doit mettre en place des stratégies spécifiques pour distribuer les ressources en fonction du type de terminal client.

51

Page 52: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Règles de conception généralesdes clients J2EE

L’architecture J2EE encourage l’utilisation de clients légers, ce qui n’empêchent pas d’accomplir plusieurs fonctions sur le client J2EE:

présentation de l’interface utilisateur: les vues de l’application peuvent être téléchargées à partir du serveur (navigateur) ou traitée sur le client (application),

validation des saisies de l’utilisateur: bien que le serveur d’EJB ou le serveur de données d’entreprise puissent vérifier eux aussi les données, une première validation peut avoir lieu sur le client,

communication avec le serveur: quand l’utilisateur sollicite une fonction gérée par le serveur, le client doit envoyer une requête vers le serveur dans un protocole compréhensible par les deux parties,

gestion des états de l’application: les applications doivent conserver des informations d’états sur ce que fait l’utilisateur dans l’application (garder trace que l’utilisateur effectue un processus particulier…)

52

Page 53: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Règles de conception pour les navigateurs web

Les navigateurs sont le type de client le plus léger. Ils présentent les données à l’utilisateur et reposent sur le serveur pour les fonctionnalités de l’application.

Du point de vue du déploiement de l’application, les navigateurs sont la solution la plus attrayante: ils permettent de mettre à jour l’application le plus

facilement, quand l’application change seul le côté serveur est modifié,

ils sont présent sur un très grand nombre de plates-formes, notamment sur les terminaux mobiles

53

Page 54: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Présentation de l’interface utilisateur 1/2

Les navigateurs téléchargent les documents à partir d’un serveur.

Les documents contiennent les données ainsi que des instructions pour présenter les données.

Ces documents sont en général construits dynamiquement à partir de pages JSP (et moins souvent à partir de servlets) et écrits dans un langage à balise tel que l’Hypertext Markup Language (HTML).

Les langages à balises permettent d’avoir une présentation raisonnable quel que soit le navigateur utilisé.

Il y a des alternatives à HTML particulièrement pour les terminaux mobiles (Wireless Markup Language (WML), Compact HTML, (CHTML), Extensible HTML (XHTML) Basic, et Voice Markup Language (VoiceML)).

54

Page 55: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Présentation de l’interface utilisateur 2/2

Les navigateurs présentent l’avantage d’avoir une interface familière pour les utilisateurs et d’être largement déployés en entreprise.

L’inconvénient de ce type de client réside dans le manque de possibilité d’interactions avec l’utilisateur. Il est possible d’utiliser des technologies comme AJAX,

JavaScript en combinaison avec d’autres standards comme les CSS et le Document Object Model (DOM), et le XmlHttprequest.

Un autre problème plus important est le temps de réponse potentiellement faible des navigateurs. Le client dépend du serveur pour la présentation donc il doit

contacter le serveur à chaque modification de l’interface. Le client crée une connexion avec le serveur à chaque fois, ce qui peut induire des problèmes de temps de latence.

Envoyer les informations de présentation en même temps que les données peut entraîner une plus grande consommation de bande passante. 55

Page 56: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Technologies web spécifiques à J2EE 1/2

Les technologies web utilisées sur un serveur J2EE sont portables, sécurisées et standardisées.

Une application web est un assemblage de composants de serveurs web, de contenu et d’informations de configuration.

L’environnement d’exécution d’une application web est appelé le conteneur web (web container).

Tous les fichiers d’une application web sont contenus un fichier Web Application Archive (WAR) qui contient également un fichier de description de dépliement rédigé en XML.

Les spécifications de la plate-forme J2EE définissent un contrat entre le conteneur web et les composants web, qui définit le cycle de vie des composants, les comportements que le composant implémente et les services que le serveur rend aux composants.

56

Page 57: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Technologies web spécifiques à J2EE 2/2

Les spécifications J2EE définissent 2 types de composants web : les Servlets Java (“servlets”) et les JavaServer Pages (pages JSP)

Une servlet est une classe Java qui étend un serveur J2EE, produisant du contenu dynamique en réponse aux requêtes du serveur.

Le serveur transmet les requêtes de services à la servlet via l’interface standard javax.servlet, que chaque servlet doit implémenter.

Une page JSP est une page HTML qui comporte des balises spéciales qui produisent du contenu dynamique personnalisé en fonction de la requête.

Les pages JSP sont habituellement transformées en servlets lors du déploiement.

La technologie JSP permet d’avoir une approche centrée sur le document (document centric) plutôt que sur la programmation lors de la conception d’une application.

57

Page 58: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Le conteneur web

Une application J2EE est exécutée à l’intérieur d’un conteneur web.

Le conteneur web gère le cycle de vie des composants web et distribue les requêtes aux composants.

Il fournit aussi des interfaces standards pour accéder au contexte, notamment aux informations de session et aux informations sur la requête courante.

Le conteneur web fournit une interface consistante aux composants, indépendamment du serveur web, c’est ce qui permet de porter et déployer un composant sur différents serveurs web Java sans modification du code.

58

Page 59: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Servlets Java 1/2 Les servlets Java sont des classes qui étendent les

serveurs web compatibles J2EE.

Une servlet produit du contenu dynamique en réponse aux requêtes portant sur une ou plusieurs URLs.

Les servlets sont des classes Java compilées portables tant au niveau du code source (car elles respectent les spécifications sur les Servlets Java) qu’au niveau binaire (car elles sont compilées en byte-code Java, par définition portable d’une plate-forme à l’autre sans modification).

En plus de produire du contenu dynamiquement, les servlets supportent plusieurs fonctionnalités applicatives.

59

Page 60: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Servlets Java 2/2

On peut ainsi déclencher des servlets en fonction d’évènements, en implémentant l’interface listener, ou déclencher un ou plusieurs servlets filters, des classes chargées de pré- ou post- traiter la requête ou la réponse d’une servlet lors de l’appel à sa méthode service.

Les servlets peuvent aussi être distribuables, le serveur web peut alors supporter des mécanismes d’équilibrage de charge et transmettre les informations de sessions entre les différents nœuds d’un cluster ; pour cela les servlets doivent être marquées comme distributable dans le descripteur de déploiement de l’application web et respecter des contraintes propres aux servlets distribuables.

Ces contraintes assurent que le code de la servlet continue à fonctionner correctement lors du déplacement d’un nœud de cluster à l’autre.

60

Page 61: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

JavaServer Pages (JSP) (1/2)

Les JSP sont la technologie la plus appropriée pour les applications web qui produisent des pages Web dynamiquement en modifiant uniquement les champs de données et pas la structure de base de la page.

Une page JSP contient un modèle de document statique et des balises spécifiques pour inclure du texte ou exécuter une partie de la logique applicative.

Le contenu statique est servi comme du HTML normal.

61

Page 62: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

JavaServer Pages (JSP) (2/2)

Les spécifications JSP définissent un jeu de balises standards implémentées par toutes les implémentations de serveurs web Java.

Les balises personnalisées et les éléments de script génèrent du contenu dynamique inclus dans la page lorsqu’elle est demandée.

Les pages JSP peuvent générer n’importe quel type de contenu textuel ,mais sont à l’origine prévues pour générer du contenu structuré tel que du HTML, XML, XHTML,….

Les pages JSP sont plus faciles à écrire que les servlets

Cours JSP

62

Page 63: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Où utiliser les JSP ?

Les pages JSP sont habituellement utilisées pour créer du contenu structuré ou des données textuelles non-structurées.

Elles sont particulièrement adaptées lorsque la valeur des données change entre les requêtes mais que leur structuration ne change pas (ou peu).

63

Page 64: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Utiliser les JSP pour la présentation des données

Les pages JSP sont particulièrement appropriées pour produire du contenu structuré.

Les vues pour visualiser les données d'une application d'entreprise sont traditionnellement en HTML, XHTML et DHTML.

Les pages JSP sont utilisées lorsque le contenu est partiellement statique, avec quelques éléments remplis dynamiquement à l'exécution. Une page JSP contient une partie fixe appelée "template data" (à ne pas confondre avec les mécanismes de modèles décrits par la suite).

Les balises personnalisées ou les éléments de script sont peuvent être placés à divers endroits des données statiques et sont substitués à l'exécution par du contenu dynamique.

Les pages JSP ne peuvent pas produire de contenu binaire et ne sont pas très adaptées à la production de contenu à grande variabilité ou à la direction de requêtes, on préférera utiliser des servlets dans ce cas.

Les pages JSP peuvent accéder facilement à la logique métier d'une application, en incluant des beans par exemple.

64

Page 65: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Utiliser les JSP pour générer du XML

Les pages JSP sont une bonne technologie pour générer du XML avec une structure fixe.

Elles sont particulièrement adaptées pour générer des messages XML dans des formats standards, où les balises sont fixes et où seules les valeurs d'attribut ou les données brutes varient entre les appels à la page.

Les documents XML peuvent aussi être générés à partir de modèles, en agrégeant par exemple plusieurs documents XML pour constituer un seul document composite.

65

Page 66: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Utiliser les JSP pour générer du texte non-structuré

Il est tout à fait possible de générer du texte brut (ASCII, Postscript) à partir d'une JSP.

Par exemple une JSP peut générer les mails à envoyer aux clients d'une application.

66

Page 67: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Utiliser les JSP comme modèles (templates)

Les JSP peuvent aussi être utilisées pour agréger du contenu provenant de plusieurs sources, comme cela est expliqué par la suite.

67

Page 68: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Encodage des pages JSP

Les JSPs utilisent la classe javax.servlet.jsp.JSPWriter pour écrire le contenu sur le flux de sortie (la réponse envoyée au client).

Cette classe s' assure que le contenu envoyé au client est correctement encodé, mais cela à un impact : l'encodage automatique du texte empêche de produire du contenu bianire à partir d'une JSP.

68

Page 69: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Eviter d'utiliser trop de balises logiques

Les bibliothèques de balises standard fournissent des balises dites “logic tags” qui permettent de faire des boucles, des itérations, d'évaluer des expressions et de prendre des décisions conditionnelles.

Il faut éviter ce genre de balises qui finalement apportent peu de bénéfices car elles entraînent une séparation moins claire entre la présentation et la logique de l'application.

A la place, il vaut mieux implémenter la logique dans une balise personnalisée qui fait appel à un entreprise beans. Ainsi une fine couche de code (le gestionnaire de balises ou tag handler) lie la balise personnalisée à un beans et utilise ses méthodes. Cette approche permet de lier la vue (page JSP ou servlet) à un accès direct au modèle de données (contenu dans le beans), permettant ainsi de conserver la logique et la présentation séparées.

69

Page 70: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Utiliser les directives d'inclusion et les balises d'inclusion JSP à bon escient

La directive include des JSP et la balise jsp:include ont la même syntaxe mais des buts différents.

Une directive d'inclusion incluse le texte littéralement dans la page et ne permet pas de traiter du contenu dynamique. L'inclusion a lieu lorsque la page JSP est compilée.

Par exemple l'instruction suivante inclut une page dans la JSP lors de la compilation :

<%@include file="header.jsp"@%>

La balise JSP include inclut du contenu dynamique ou statique à chaque fois que la page est servie et permet donc d'inclure du contenu dynamique à l'exécution (à chaque fois que la page est servie).

70

Page 71: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Exemple

<jsp:include page="/servlets/currentUserInfoServlet"/>

La directive JSP d'inclusion sert plutôt pour réutiliser du contenu et rendre modulaire ses pages web, tout en réduisant leur taille.

Il faut prendre en compte que le fait que le fichier est inclus à la compilation et donc la servlet résultante est plus grosse qu'une servlet qui inclut les pages à l'exécution (mais cette dernière solution réclame plus de temps). A chaque fois qu'une page JSP est demandée dans le cas d'un inclusion par la balise JSP

include, les pages liées ont recompilées. De plus les composants utilisés (par exemple des JavaBeans ou d'autres objets fournis par le

conteneur) doivent être re-déclarés dans chacune des pages inclues et partagés entre les pages via l'utilisation de l'objet HttpSession.

Les directives d'inclusion peuvent être problématiques pour supporter l'internationalisation. Ainsi le header HTTP contentType:charset des pages inclues ne peut être assigné différemment dans les pages inclues et la page qui inclut. (le contentType de cette page l'emporte)

Note d'implémentation: certains conteneurs web comme Tomcat ne prennent pas automatiquement en compte les modifications faites aux fichiers inclus par la directive include. Si vous changez un fichier inclus, il faut "toucher" (modifier la date de dernière modification) les documents parents qui incluent le fichier.

71

Page 72: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Utiliser des balises personnalisées pour éviter les éléments de script

Il est préférable d'utiliser des balises personnalisées plutôt que des éléments de script (scriptlets) pour les raisons suivantes : le code scriplet n'est pas réutilisable le code scriptlet mélange logique et présentation de l'application dans la même page le code scriptlet ne permet pas de bien séparer les rôles entre les développeurs de pages

web et de code JavaUn concepteur web aura par exemple du mal à modifier du code Java pour lui appliquer une présentation :<%out.println("<a \"href=\""+url +"\">"+text);%></a>

le code scriptlet est plus difficile à lire et à maintenir que des balises personnalisées

Les informations de débogage d'une scriptlet peuvent être difficiles à interpréter, en définissant du code associé à une balise personnalisée on peut localiser plus facilement l'erreur Le code de scriptlet est plus difficile à tester, avec des balises personnalisées, on dispose de

composants personnalisés prêt à subir des tests unitaires

Éviter de rediriger des requêtes à partir de pages JSP Quand une page JSP appelle RequestDispatcher.forward elle se comporte comme un

contrôleur. Les contrôleurs sont de préférence implémentés dans des servlets, pas dans des composants

de présentation.

72

Page 73: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Mauvais exemple de JSP se comportantcomme un contrôleur

<%String creditCard =request.getParameter("creditCard");

if (creditCard.equals("Visa")){%>

<jsp:forward page="/processVisa.jsp"/>

<%}else if (creditCard.equals("American Express")){%>

<jsp:forward page="/processAmex.jsp"/>

<%}%>

73

Page 74: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Résumé 1/3

Le serveur web d’une application J2EE rend disponible les applications sur le World Wide Web.

Les pages JSPs et les servlets sont des composants web qui succèdent aux anciennes technologies côté serveur telles que les CGIs et qui assurent une portabilité inégalée.

Le conteneur web fournit des services de haut niveau aux composants web en matière de transactions,accès aux données, gestion des états, sécurité et distribution.

L’utilisation de bibliothèques de balises personnalisées améliore la qualité du code source et facilite la maintenance des applications.

Le patron de conception Modèle-Vue-Contrôleur est recommandé pour la plupart des applications web interactives car il permet de créer des applications réutilisables, et d’ajouter de nouveaux types de clients, processus et vues facilement.

74

Page 75: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Résumé 2/3

Le serveur web d’une application est une couche de service neutre, habituellement conçu sur le modèle MVC, qui simplifie la création d’applications web interactives.

Le modèle de conception le plus simple a un seul contrôleur qui reçoit les requêtes des navigateurs, les distribue dans l’application et affiche les résultats.

Il est possible d’utiliser plusieurs contrôleurs web pour gérer nativement des clients web utilisant des protocoles différents.

Un mécanisme de modèles (templates) permet d’améliorer la mise en page des écrans de l’application.

Le mécanisme de modèle permet d’utiliser un fichier modèle pour assembler des vues individuelles en une vue composée sur l’application.

Les servlets sont principalement utilisées pour générer des données binaires et contrôler l’application.

Les pages JSP sont principalement utilisées pour créer du contenu textuel et des références à des données externes.

Les filtres de servlets peuvent être utilisés pour étendre les fonctionnalités d’une servlet existante, d’un JSP ou d’un autre filtre de servlet.

75

Page 76: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Résumé 3/3

Les états d’une application web ont 4 types de portées : portée application, portée session, portée requête et portée page.

Les états de portée session ont le plus d’impact sur la charge engendrée par une application web car ils sont proportionnels au nombre d’utilisateurs.

Il est recommandé d’utiliser des beans de session avec états pour conserver les données de session.

Les applications uniquement web peuvent stocker les informations de session dans les attributs de session HTTP.

Certains produits J2EE permettent à une application d’être distribuée pour augmenter sa disponibilité et sa scalabilité mais cette possibilité n’est pas encore standardisée.

Les servlets, JSP et balises personnalisées d’une application web distribuable doivent respecter des contraintes supplémentaires.

76

Page 77: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Composants Enterprise Java Beans (entreprise java beans tiers)

Dans une application J2EE multi-tiers, le tiers Enterprise JavaBeans héberge la partie de l’application concernant la logique métier et fournit les services systèmeainsi que la gestion de la concurrence, des transactions et de la sécurité.

La technologie EJB fournit un modèle de composants distribués qui permet aux développeurs de se concentrer sur les problèmes liés à la logique métier de l’application, en se reposant sur la plate-forme J2EE pour toutes les interactions complexes avec le système.

Dans le modèle de programmation J2EE les composants EJB sont le lien fondamental entre les composants de présentation hébergés par le tiers web et les données de l’application stockées sur les serveurs du système d’information de l’entreprise.

77

Page 78: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Types de beans

Il y a 3 types de beans: les beans de sessions (session beans), les beans d’entité (entity beans) et les beans à message (message-driven beans).

Les beans de session sont des beans destinés à contenir des ressources privées concernant un seul client. Pour cette raison, les beans de session paraissent du point de vue du client comme anonymes.

Les beans d’entité sont des composants qui représentent la vue objet d’une entité stockée dans un entrepôt de données persistant, comme une base de données.

Par rapport au beans de session, chaque beans d’entité peut être identifié par un attribut appelé la primary key.

Les beans à messages sont une nouveauté de l’architecture EJB 2.0 et sont supportés à partir de la plate-forme J2EE 1.3. Les beans à message sont des composants qui traite de manière asynchrone des messages délivrés par l’API Java Message Service (JMS).

Les sections suivantes présentent les deux premiers types de beans et les principes généraux des beans.

78

Page 79: JEE Java Enterprise Edition Riadh Ouersighni Maître de Conférence en Informatique Isitcom - 2010 1

Principe des beans

Les EJBs sont des objets dérivés de la classe de base EJBObject, contenue dans le package javax.ejb. Les EJBs sont définies dans les spécifications EJB 2.0.

Ce sont des composants capables d’être exécutés en environnement distribué, avec des capacités transactionnelles et une gestion de la persistance.

La philosophie WORA : “Write Once, Run Anywhere” a guidé la conception des EJBs. Ces composants permettent d'étendre dynamiquement le comportement d'un serveur et de connecter facilement des applications à une BD.

Utiliser des EJB revient à “enficher” des entités autonomes sur une plate-forme applicative Java.

Les beans doivent implémenter deux types d'interfaces : - une interface home, chargée de créer et gérer les beans - une interface "normale" qui implémente les méthodes métiers des beans.

Ces interfaces peuvent être soient locales soit distantes.

En plus d'implémenter ces interfaces un beans dispose des caractéristiques décrites ci-après.

79