Vous êtes sur la page 1sur 25

Filière Génie Informatique Année : 2020/2021

Le Composant Web :

Entreprise Java Beans : EJB


SAIR Abdellah
Architecture D’une application
Client serveur J2EE
Couche Présentation Couche Métier Couche Données

Client Lourd RMI Serveur Application


•AWT
Conteneur EJB Services
•SWING SGBD
Serveur web JDBC
•SWT EJB
Conteneur RMI JNDI
de Servlets JMail
Client Léger Conteneur
JSP Web Services JTA
• HTML
HTTP SOAP
• CSS Servlet JCA
Web
• Java Script Service
Metier Java
Beans
• XML Java Beans

•Ajax JDBC
•Flash
Présentation des EJB
 Les Entreprise Java Bean ou EJB sont des composants serveurs qui
respectent les spécifications d'un modèle édité par Sun.
 Ces spécifications définissent une architecture, un environnement
d'exécution et un ensemble d'API.
 Le but des EJB est de faciliter la création d'applications distribuées
pour les entreprises.
 Une des principales caractéristiques des EJB est de permettre aux
développeurs de se concentrer sur les traitements orientés métiers
car les EJB et l'environnement dans lequel ils s'exécutent prennent
en charge un certain nombre de traitements tel que
 la gestion des transactions,
 la persistance des données,
 la sécurité, ...
 Physiquement, un EJB est un ensemble
 D’ interfaces
 et une classe
 Des descripteurs de déploiement (fichiers xml)
 Ces différents fichiers forment un module archivé dans un fichier .jar
Présentation des EJB

 Les EJB s'exécutent dans un environnement particulier :


le serveur d‘application.
 Celui ci fournit un ensemble de fonctionnalités utilisées
par un ou plusieurs conteneurs d'EJB qui constituent le
serveur d'EJB.
 C'est donc dans un conteneur que s'exécute un EJB et
il lui est impossible de s'exécuter en dehors.
 Le conteneur d'EJB propose un certain nombre de
services qui assurent la gestion :
 du cycle de vie du bean.
 de l'accès au bean.
 de la sécurité d'accès.
 des accès concurrents.
 des transactions.
Présentation des EJB
Présentation des EJB

 Les entités externes au serveur qui appellent un EJB ne


communiquent pas directement avec celui-ci mais avec
le conteneur.
 Un objet héritant de EJBObject assure le dialogue entre
ces entités et les EJB via le conteneur.
 L'avantage de passer par le conteneur est que celui ci
peut utiliser les services qu'il propose et libérer ainsi le
développeur de cette charge de travail.
 Ceci permet au développeur de se concentrer sur les
traitements métiers proposés par le bean.
 Il existe de nombreux serveurs d'EJB commerciaux :
BEA Weblogic, IBM Webpshere, Sun IPlanet,
Macromedia JRun, Borland AppServer, etc ...
 Il existe aussi des serveurs d'EJB open source dont les
plus avancés sont JBoss et Jonas.
Différents types d’EJB

 Il existe trois types d'EJB :


 Session beans : les EJB session
Stateless : sans état.
Statefull : avec état.
 Entity beans :les EJB entité.
 message driven beans : Message driven
beans.
 Ces trois types de beans possèdent des
points communs notamment celui de devoir
être déployés dans un conteneur d'EJB.
Session beans
 Les session beans peuvent être de deux types :
 sans état (stateless) : Les beans de session
sans état peuvent être utilisés pour traiter
les requêtes de plusieurs clients.
 ou avec état (statefull) :Les beans de
session avec état ne sont accessibles que
lors d'un ou plusieurs échanges avec le
même client. Ce type de bean peut
conserver des données entre les échanges
avec le client.
Entity beans
 Les beans entité assurent la persistance des
données. Il existe deux types d'entity bean :
 persistance gérée par le conteneur (CMP :
Container Managed Persistence)
 persistance gérée par le bean (BMP : Bean
Managed Persistence).
 Avec un bean entité CMP (container-managed
persistence), c'est le conteneur d'EJB qui assure
la persistance des données.
 Un bean entité BMP (bean-managed
persistence), assure lui même la persistance des
données grâce à du code inclus dans le bean.
Développement d’un EJB

 Le cycle de développement d'un EJB


comprend :
la création des interfaces et des classes du
bean.
le packaging des beans sous forme de
fichier archive .jar
le déploiement des beans dans un serveur
d'EJB.
le test des beans.
Développement d’un EJB
 La création d'un bean nécessite la
création d'au minimum une interface
et une classe pour respecter les
spécifications de Sun :
 La classe du bean,

 l'interface remote.
Interface Remote

 L'interface remote permet de définir l'ensemble des


services fournis par le bean.
 Cette interface étend l'interface EJBObject.
 L'interface remote définit donc les méthodes qui
contiendront les traitements proposés par le bean.
 Dans la version 2.0 des EJB, l'API propose une
interface supplémentaire, EJBLocalObject, pour
définir les services fournis par le bean qui peuvent
être appellés en local par d'autres beans.
 Ceci permet d'éviter de mettre en oeuvre toute une
mécanique longue et coûteuse en ressources pour
appeler des beans s'exécutant dans le même
conteneur.
Exemple d’une interface Remote

package com.et;
import javax.ejb.Remote;
@Remote
public interface PremierEJB3 {
public String ditBonjour(String Nom);
}
Exemple d’implémentation

package com.et;
import javax.ejb.Stateless;
@Stateless
public class PremierEJB3Bean implements PremierEJB3 {
public String ditBonjour(String Nom) {
return "Bonjour " + Nom + " !!!";
}
}
Application
 Création d’un EJB Session Bean sans
état en utilisant NetBeans et le
serveur d’application GlassFish.
Développement d'un EJB Entity
 La spécification EJB 3 revoit très
largement le développement des Entity
Beans.
 Les EJB Entity sont décrits dans une
spécification complémentaire nommée
JPA (Java Persistence API) dont les
principaux apports sont :
Développement d'un EJB Entity

1. Simplification du code via l'utilisation de


l'approche 'POJO' (Plain Old Java Object)
: un EJB Entity consiste en une classe
Java standard (pas de contrainte
d'héritage, pas de méthode particulière à
implémenter).
2. Fonctionnalités de mapping objet-
relationnel plus riches : La spécification
JPA propose d'utiliser les annotations
pour définir le mapping.
Développement d'un EJB Entity

1. Le développement d'un EJB Entity est


relativement simple.
2. Ajouter la classe suivante au projet :
lien1.pdf
RQ:
 Seules les annotations @Entity et @Id
distinguent cette classe d'une classe
non persistente.
Développement d'un EJB Entity

1. La spécification JPA propose des API


pour gèrer le cycle de vie d'un objet
persistant. Pour illustrer de façon
simple ces APIs, nous allons créer un
EJB Session.
2. Dans le projet EJB créer l'interface et
la classe suivante :
Développement d'un EJB Entity

/*Interface GestionDeStock*/
package com.et;
import java.util.List;
import javax.ejb.Remote;
@Remote
public interface GestionDeStock {
public void ajouter(Produit produit);
public Produit rechercherProduit(String id);
public List<Produit> listerTousLesProduits();
}
Développement d'un EJB Entity

/*Implémentation de l’Interface
GestionDeStock*/

Voir le code suivant :


Développement d'un EJB Entity

/* Test de l'EJB Entity */

 La spécification JPA standardise l'utilisation


d'un fichier, nommé persistence.xml, qui
permet de préciser des paramètres
techniques liés au mapping objet-relationnel,
par exemple le nom de la 'DataSource' à
utiliser pour se connecter à la base de
données.
Développement d'un EJB Entity
/* Test de l'EJB Entity */
 Pour tester notre EJB entity, nous devons définir le
fichier persistence.xml et préciser la DataSource que
nous voulons utiliser.
 Ce fichier aura une structure comme celle-ci:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="EnterpriseApplication1-ejbPU" transaction-
type="JTA">
<jta-data-source>LPSIL2016</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
Développement d'un EJB Entity

/* Test de l'EJB Entity */


 Dans le projet EJB, créer le sous-répertoire scr/conf
et y placer le fichier persistence.xml suivant :
 <persistence>
<persistence-unit name="IntroEJB3">
<jta-data-source>java:/DefaultDS
</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto"
value="update"/>
</properties>
</persistence-unit>
</persistence>
Développement d'un EJB Entity

/* Test de l'EJB Entity */


 Pour tester le fonctionnement des EJB :

suivre se lien
 On Vérifie que les données ont bien été insérées
dans la base de données du travail.

Vous aimerez peut-être aussi