Vous êtes sur la page 1sur 37

Système d’information distribué

Enterprise Java Beans


(EJB)

1
Y. GAFOUR
Université de Tiaret
Plan
2
 Architecture n – tiers
 Triptyque d’une application
 Frameworks globaux
 JEE
 APIs de JEE
 Serveurs d’applications
 Architecture
 Détails des couches

 Modèle EJB
 Architecture EJB
 Conteneur EJB
 Les conteneurs
 Types d’EJB
 Unité de persistance
Triptyque d’une application
3
Présentation : correspondant à l’interface homme-machine (IHM). Contient les différents types
de clients :
 Léger : les clients légers représentent les applications utilisant un navigateur Web comme
interface graphique.
 Lourd : des clients utilisant une interface graphique à base de formulaires riches et de
contrôles graphiques complexes.

Présentation
Persistance : enregistrement sur
support physique des données
Services métier : représente le
de l’application.
traitement ou la partie applicative.
 Fichiers (binaires, XML, ...).
 Services offerts aux utilisateur.
 Base de données.

Services métier
Persistance
Normes J2EE
4
Java EE (Java Enterprise Edition) est une norme visant à définir
un standard de développement d’applications d’entreprises multi-
niveaux, basées sur des composants.
JEE comprend :
Services au travers d’APIs : des extensions Java permettant
d’offrir un certain nombre de fonctionnalités.
Un serveur d'applications Java EE est un environnement
logiciel qui fournit un envirenement pour le déploiement,
l'exécution et la gestion d'applications basées sur la plateforme
Java Enterprise Edition (Java EE).
APIs de J2EE
5

2 grandes catégories

Composants Services

Composants Web Services d’infrastructures


Composants métier Services de communication
APIs de JEE
6
 Services : pouvant être classés par catégories :
Services d’infrastructures :
JDBC (Java DataBase Connectivity) pour l’accès aux bases de
données relationnelles.
JNDI (Java Naming and Directory Interface) pour l’accès aux
services de nommage et aux annuaires d’entreprises.
JAXP (Java API for XML Processing), permettant la création, la
manipulation et le traitement de fichiers XML à bas niveau.
JAX-RPC (Java API for XML-based RPC) est utilisé pour les services
Web. Permettant de transmettre des messages SOAP en mode RPC.
JTA/JTS (Java Transaction API/Java Transaction Services) est une
API définissant des interfaces standard avec un gestionnaire de
transactions.
…
APIs de J2EE
7
Services de communication :
JAAS (Java Authentication and Authorization Service) est une
API de gestion de l’authentification et des droits d’accès.
JavaMail est une API permettant l’envoi de courrier électronique.
JMS (Java Message Service) fournit des fonctionnalités de
communication asynchrone (appelées MOM pour Middleware Object
Message) entre applications.
Java IDL est utilisée pour appeler des services CORBA.
RMI (Remote method invocation) est une API permettant
d’appeler des méthodes distantes.
Serveurs d’applications
8

Un serveur d’application est une machine servant à héberger


des applications.

Le terme est apparu dans le domaine des applications Web.

Dans un sens strict les composants hébergés par le serveur


d’applications ne sont pas de simples procédures ou scripts
mais de réels composants logiciels conformes à un modèle
de composants.
Exemple : Enterprise JavaBeans (EJB).
Serveurs d’applications
9

Présentation Métier Données


Données

Conteneur Web

Services au
travers d’APIs

Conteneur d’EJB
Architecture JEE
10

 L’architecture JEE est une architecture d’application distribuée à base de


composants.
 L’architecture JEE permet de séparer :
 Couche de présentation : correspondant à l’interface homme-machine
(IHM).

 Couche de métier : représentée par les objets du domaine, c’est à dire


l’ensemble des entités persistantes de l’application.

 Couche de données : correspondant aux informations de l’entreprise stockées


dans des fichiers, dans des bases de données relationnelles ou XML, dans des
annuaires d’entreprise ou encore dans des systèmes d’information complexes.
Architecture JEE – 3 tiers
11

Présentation
Présentation Métier
Métier Données
Données
12 L’architecture EJB
L’architecture EJB identifie les éléments suivants :
• composants logiciels ou Enterprise Java Beans (EJB)
• conteneurs
• serveurs
• Clients

Les conteneurs et les serveurs implantent les mécanismes


de bas niveau utilisés par les applications (transactions,
persistance, gestion mémoire…)
13
Les conteneurs
Un conteneur est un intermédiaire entre un composant
et les fonctionnalités de bas niveau fournies par la
plate-forme :

La sécurité : le modèle de sécurité permet de configurer les


ressources accessibles pour les utilisateurs autorisés.

La gestion des transactions : le modèle transactionnel offre


la possibilité de définir les relations entre les méthodes.
Les conteneurs
14

Les recherches JNDI : fournissent une interface pour se


connecter aux services de noms ou d’annuaires.

Les connexions distantes : le conteneur gère l’ensemble


des connexions distantes entre les clients et les objets dont il
a la responsabilité. Il gère également la distribution de ces
objets, si nécessaire.

La montée en charge : le conteneur est responsable de la


bonne utilisation et du recyclage des ressources
(connexion SGBD, mémoire…).
15 Types d’EJB
Les Session Beans
Les Session Beans Stateless
Les Session Beans Stateful
Les Entity Beans
Les Message Driven Beans
16
Les Session Beans
 Un Session Bean est une application côté serveur permettant de
fournir un ou plusieurs services à différentes applications clientes.

 Un service sert, par exemple à :


récupérer la liste des produits d’une boutique
enregistrer une réservation
vérifier la validité d’un stock.

 Les Session Beans constituent donc les briques de la logique


métier d’une application.
17 Les Session Beans
 Les Session Beans Stateless « sans état »

Un Stateless Session Bean est une collection de services


dont chacun est représenté par une méthode.

Stateless signifie que le service est autonome dans son


exécution et donc qu’il ne dépend pas d’un contexte
particulier ou d’un autre service.

 Le point important réside dans le fait qu’aucun état n’est


conservé entre deux invocations de méthodes.
18 Les Session Beans
 Les Session Beans Stateless « sans état »

Lorsqu’une application cliente appelle une méthode


d’un Session Bean, celui-ci exécute la méthode et
retourne le résultat.

L’exécution ne se préoccupe pas de ce qui a pu être


fait avant ou ce qui pourra être fait après.
19 Les Session Beans

@Stateless est sans état : il ne conserve pas une


mémoire de ce qu’il a fait précédemment.

un stateless, au moment ou l'ejb est déchargé de la


mémoire toutes les variables éventuellement utilisées
par les méthodes ne seront pas préservées.
20 Les Session Beans
Les Session Beans Stateless « sans état »

Figure 9 — Liaison entre clients et Session Bean Stateless

•L’avantage du type Stateless est sa performance. Plusieurs clients


utilisent la même instance de l’EJB
21 Les Session Beans

 Exemple

 le catalogue. Un utilisateur peut consulter les fiches produits de plusieurs articles,


on a pas besoin quel sont les articles qu'il a vu auparavant pour afficher la fiche du
produit en cours.
22 Les Session Beans
 Les Session Beans Stateful « avec état ».

 Les stateful session beans associent les requêtes à un client spécifique,


unissant client et EJB dans une relation un-un.

 il a aussi la possibilité de conserver des données entre les différents


appels de méthodes d’un même client.

 une méthode appelée sur l’EJB peut lire ou modifier les informations sur
l’état conversationnel.

 Cet EJB est partagé par toutes les méthodes pour un unique client.
23 Les Session Beans
 Les Session Beans Stateful « avec état ».

Figure 10— Liaison entre clients et Session Bean Stateful


24 Les Session Beans
 @Stateful est avec état : il conserve une mémoire de ce qu’il
a fait précédemment.

 le client discute avec un EJB stateful, il dialogue toujours


avec la même instance.
25 Les Session Beans

 Exemple

 Exemple de session bean statefull : le panier d'un site de


vente par correspondance. Si l'utilisateur ajoute de
nouveaux produits au panier, mieux vaut ne pas oublier
tous les produits qu'il y a mis précédemment.
26 Les Session Beans
 Les interfaces

 L’interface local est, quant à elle, destinée aux clients locaux, qui
s’exécutent dans la même machine virtuelle que le serveur (typiquement,
d’autres EJB ou une servlet s’exécutant sur le même serveur).

 L’interface remote est destinée aux clients distants. En effet, un client


distant ne s’exécute généralement pas dans la même machine virtuelle
que celle du serveur.
27 Les Session Beans
 Les interfaces

 @Local
 public interface EtudiantFacadeLocal {

 void create(Etudiant etudiant);

 void edit(Etudiant etudiant);

 void remove(Etudiant etudiant);

 Etudiant find(Object id);

 List<Etudiant> findAll();

 List<Etudiant> findRange(int[] range);

 int count();
28 Les Entity Beans
 Qu’est-ce qu’un Entity Bean ?

 Entity Beans ont été créés pour simplifier la gestion des


données au niveau d’une application, mais aussi pour
faciliter la sauvegarde en base de données.

 Entity Beans vous permettent de prendre en charge la


persistance des données de votre application dans une ou
plusieurs sources de données, tout en gardant les relations
entre celles-ci.

 les Entity Beans sont des POJO (Plain Old Java Object) : ce
concept a pour but de représenter une idée avec le plus
simple et le meilleur design.
Les Entity Beans
29  Un entity bean est une simple classe java (Pojo).
 On déclare, instancie et utilise cet entity bean tout comme n’importe quelle autre
classe.

• @javax.persistence.Entity permet à JPA de


reconnaître cette classe comme une classe
persistante et non comme une simple classe Java.

• @javax.persistence.Id définit l’identifiant unique


de l’objet. Elle donne à l’entity bean une identité en
mémoire en tant qu’objet, et en base de données
via une clé primaire.

Exemple simple d’entity bean


30 Les Entity Beans
 Grâce à les annotations, JPA peut synchroniser les données
entre les attributs de l’entity bean User et les colonnes de la
table User.

 Mapping objet/relationnel : liaison automatique des propriétés


d’un objet et d’une table de données permettant de
sauvegarder/recharger facilement les informations d’une
instance de l’objet.

Figure — Mécanisme de persistance objet/relationnel


31 Les Message Driven Beans
 Le concept de MDB (Message Driven Bean) a été introduit avec
les EJB 2.0 afin de traiter les messages venant d’un fournisseur JMS
(Java Message Service).

 Qu’est-ce que JMS ?


JMS est l’API utilisée pour l’accès à un système de messagerie
d’entreprise. C’est la solution Java EE au concept du MOM
(Message Oriented Middleware).

 Ce système permet l’échange de messages entre différentes


applications distantes.
32 Les Message Driven Beans
 Qu’est-ce que JMS ?

Figure 12 — Architecture JMS


33 JMS (Java Message Service).
 Un fournisseur : c’est l’élément qui a la charge de la livraison
des messages entre les différents intervenants. Il s’occupe de
traiter les envois et de faire en sorte qu’ils soient bien reçus.
 Un client : c’est une application ou composant d’application
intervenant lors des échanges. Il envoie ou reçoit les messages.
 Un message : l’élément qui va transiter via une communication
entre les clients. Un fournisseur sert toujours d’intermédiaire ; on
ne les envoie donc pas directement d’un client à un autre.
 Les destinations : ce sont des objets configurés au niveau du
fournisseur qui sont à disposition des clients et qui représente un
endroit où les applications JMS peuvent envoyer et recevoir des
messages.
34
Modes d’envoi des messages
 Mode Point à Point
Le mode point à point repose sur le concept de files
d’attente (Queue).
Cela signifie que chaque message est envoyé par un
producteur dans une file d’attente, et est reçu par un seul
consommateur.
35
Modes d’envoi des messages
 Mode publication/abonnement
Le mode publication/abonnement repose sur le concept
de sujets (Topics).
Des messages sont envoyés par plusieurs producteurs dans
un Topic, et qu’ils sont reçus par plusieurs consommateurs.
Les consommateurs des messages s’abonnent aux sujets
qui les intéressent, c’est le principe de l’abonnement.
36 Message-driven bean
 Un message-driven bean, ou MDB, est un EJB qui se comporte
comme un listener JMS, c’est-à-dire qui reçoit des messages
et les traite de manière asynchrone.

 Les MDB sont à l’écoute (listener) d’une file d’attente et se


réveillent à chaque arrivée de messages. En fait, il faut garder
à l’esprit que c’est le conteneur qui est le véritable listener
JMS et qu’il délègue au MDB le traitement du message, et
plus particulièrement à la méthode onMessage().

 La méthode onMessage est activée à la réception d’un


message envoyé par un client JMS.
Cas d’utilisation MDB
37

• Un MDB peut également être utilisé pour mettre à jour des données.
• Nous utilisons ce composant pour écouter les messages contenant les nouvelles
valeurs boursières (venant d’une destination de type topic).
• De cette façon, il met à jour la base de données avec les nouvelles valeurs

Vous aimerez peut-être aussi