0% ont trouvé ce document utile (0 vote)
83 vues35 pages

EJB (Enterprise JavaBeans)

Le document présente la technologie JEE et ses composants, notamment les EJB (Enterprise JavaBeans), qui permettent de créer des applications d'entreprise distribuées et multi-utilisateurs. Il décrit l'architecture JEE, les types de beans d'entreprise, ainsi que les améliorations apportées par EJB 3.0, telles que l'utilisation d'annotations et la simplification des interfaces. Enfin, il fournit des exemples pratiques de mise en œuvre d'EJB dans des serveurs d'application comme Glassfish et JBoss.

Transféré par

Andil mchangama
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
83 vues35 pages

EJB (Enterprise JavaBeans)

Le document présente la technologie JEE et ses composants, notamment les EJB (Enterprise JavaBeans), qui permettent de créer des applications d'entreprise distribuées et multi-utilisateurs. Il décrit l'architecture JEE, les types de beans d'entreprise, ainsi que les améliorations apportées par EJB 3.0, telles que l'utilisation d'annotations et la simplification des interfaces. Enfin, il fournit des exemples pratiques de mise en œuvre d'EJB dans des serveurs d'application comme Glassfish et JBoss.

Transféré par

Andil mchangama
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

JEE

EJB (Enterprise JavaBeans)

Janvier 2010

Joseph NDONG FST/UCAD


Introduction

La technologie JEE permet de réaliser des applications d’entreprises:

- distribuées (composants EJBs stockés sur plusieurs serveurs)


- Multi utilisateurs
- pouvant se connecter à plusieurs bases de données (BDs réparties).

Les applications peuvent tourner sur un Intranet et/ou sur l’Internet.

JEE permet de faire de la programmation de haut niveau (logique applicative ou métier).


On ne se soucis pas donc des spécifications de bas niveau comme les BDs, la gestion des
transactions, la sécurité,….)

Joseph NDONG FST/UCAD


Composants JEE

La technologie JEE propose deux types de composants principalement:

- Les composants WEB: Servlets, JSP (Java Server Page), JSF (Java Server Faces)
- les composants EJBs (Enterprise Java Beans)

les EJBs sont un type de composants implémenté coté serveur pour gérer la logique métier
ou logique applicative.

Joseph NDONG FST/UCAD


Architecture JEE

L’architecture JEE est composée principalement de deux composants:


- Logique métier (Business Logic): implémentée par les EJB rassemblés sous forme de fichiers
.jar et déployés dans un serveur d’application. Le dépoiement se fait soius forme de fichiers
EAR (Enterprise ARchives).

- Logique de présentation (Presentataion Logic): implémentée grâce aux JSP, Servlets,


HTML, fichiers images, etc, pour inter agir avec le client. Cette partie peut être rassemblée en
archive web (.WAR)

Joseph NDONG FST/UCAD


EJB Container

Un conteneur d’ EJB est simplement un programme s’exécutant coté serveur et implémentant


les spécifications des EJBs.

Ce conteneur fournit ente autres services:

- la gestion des transactions


le conteneur utilise JTA (Java Transaction API) pour les services de transaction
- la sécurité
il ne s’agit plus de coder la sécurité mais juste d’appliquer les attributs de sécurité.
- la gestion du cycle de vie (création, activation, désactivation ) des ressources
(BDs, threads, sockets)
- l’accès de méthode à distance (remote objects)
- la gestion des concurrences:
collision
control mechanism
clustering and load-balancing Joseph NDONG FST/UCAD
Enterprise bean

Un bean d’entreprise est un composant coté serveur qui s’exécute dans le conteneur d’ EJB
et qui gère la logique métier d’une application d’entreprise.

Les beans d’entreprises servent à développer à large échelle des applications distribuées.
Les beans sont des composants portables (exécutables sur n’importe quel serveur JEE)
à partir desquels il est aisé de créer de nouvelles applications.

Coté client, le développeur ne s’intéresse qu’à la partie présentation (création des vues).

Joseph NDONG FST/UCAD


Les types de bean Enterprise

EJB 3.0 supporte trois (3) types de beans d’entreprises: les Session Bean, les Bean Entity et les
Message Driven Bean.

1) Session bean: ce type de bean représente un client unique dans le serveur d’application.
interagit directement avec le client et contient la logique métier.
Ce bean est valable pour un seul client à la fois et n’est pas persistent. Il est détruit une fois la
session terminée.
Ce type de bean est constitué de deux sous –types: les beans sans état (Stateless Session beans)
et les beans avec état (Statefull Session bean).
Les beans session contiennent toutes les méthodes applicatives (logique métier)
à travers l’interface métier (business interface) .

Stateless session is easy to develop and its efficient. As compare to entity beans session beans
require few server resources.

Joseph NDONG FST/UCAD


Les types de bean Enterprise

-Stateless Session bean:

ce bean ne maintient pas un état conversationnel avec le client. Lorsqu’un client invoque une
méthode d’une instance de bean sans état (stateless), l’état des champs d’instance ne sont
valables que pendant la durée de cet appel.
Ce type de bean permet de gérer la scalabilité pour des applications nécessitant un grand nombre
de clients.

-Statefull Session bean:

L’état de l’objet correspond aux valeurs des variables ou champs de l’instance. Cet état est
maintenu pour toute la durée de la conversation d’un client donné.

Joseph NDONG FST/UCAD


Les types de bean Enterprise

2) Entity bean:

Les beans entité sont des objets Java persistents, dont l’état peut être sauvegardé dans une
base de données. Une entity bean représente une ligne (enregistrement) d’une table dans la
base.
3) Message Driven bean:

Ce type de bean est utilisé dans les applications JEE pour gérer les messages asynchrones.
Les messages sont reçus avec le service JMS.
Il s’exécute comme un écouteur (listener) pour un message particulier comme
JPA (Java Message API).

Joseph NDONG FST/UCAD


Nouvelles forces de EJB 3.0

EJB 3.0 a apporté beaucoup de simplifications par rapport aux versions précédentes des EJBs.

- pas besoin des interfaces Home et Remote: les beans sont maintenant de simples POJOs.
- on n’a plus besoin des composants de type interface.
- usage recommandé des annotations java: il n’est plus nécessaire d’écrire un descripteur
de déploiement.
- les APIs sont simplifiés pour tenir compte de la flexibilité de l’environnement des beans
- EJB 3.0; utilise les annotations de Java 5 et le mécanisme d’injection de dépendances
pour l’encapsulation des dépendances environnementales et l’accès JNDI.
- Introduction d’une nouvelle API, EntityManager pour créer, rechercher, détruire les objets
- élimination des interfaces Callback.

Joseph NDONG FST/UCAD


EJB descriptor deployment

Deployment descriptor is the file which tells the EJB server that which classes make up the bean
implementation, the home interface and the remote interface. it also indicates the behavior of
one EJB with other.

The deployment descriptor is generally called as [Link] and is in the directory


META-INF of the client application.

Joseph NDONG FST/UCAD


Premier exemple EJB 3.0 (1/5)

Dans un premier temps, nous utilisons le serveur d’application développé par SUN micro-
Systems, Glassfish tool bundle for Eclipse, version 1.2).
Vous pouvez télécharger une version à l’adresse: [Link]
Nous allons dans ce premier exemple reprendre le célèbre HelloWorld mais en version EJB.
Nous disposerons d’un simple client avec une méthode principale main.
Voici les différentes étapes pour la mise en œuvre de cet exemple:
1) Création du project: File  Other  EJB  EJB Project
2) Donnez un nom au projet, par exemple: premierejb
Ajoutez les deux fichiers jars suivants [Link] et [Link]
dans les librairies de votre projet. Ceux-ci sont dans le répertoire lib d’installation de Glassfish.
Dans Target Runtime, cliquez sur le bouton New et ajoutez GlassFish v3 JEE 6 comme
serveur, et dans EJB Module version, choisissez 3.0.
3) Cliquez sur Finish.

Joseph NDONG FST/UCAD


Premier exemple EJB 3.0 (2/5)

Maintenant que le projet est créé, vous pouvez ajouter un EJB. Dans un premier temps
vous devez créer une interface distante contenant les méthodes qu’un client pourra
appeler à distance.

package essai;

import [Link];

@Remote
public interface HelloWorldRemote {
public String disHello ( );
}

[Link]

Joseph NDONG FST/UCAD


Premier exemple EJB 3.0 (3/5)
…<sun-ejb-jar>
<enterprise-beans>
<ejb>
package essai; <ejb-name>HelloWorldBean</ejb-name>
<jndi-name>java:global/ndong</jndi-name>
import [Link]; </ejb>
import [Link]; </enterprise-beans>
</sun-ejb-jar>
/** ……
* Session Bean implementation class HelloWorldBean [Link]
*/

@Stateless (name="HelloWorldBean", mappedName="ndong")


public class HelloWorldBean implements HelloWorldRemote, Serializable{

private static final long serialVersionUID = 1L;


public String disHello ( ){
return "Helloworld: version EJB";
} [Link]
}
Joseph NDONG FST/UCAD
Premier exemple EJB 3.0 (4/5)

package essai;
import [Link];
import [Link];
import [Link];
public class SimpleClientEJB {

public static void main(String[] args) throws NamingException {


[Link] ("Running the EJB client ...");
Context ctx = new InitialContext ( );
HelloWorldRemote sessionbean = (HelloWorldRemote)[Link] ("java:global/ndong");
[Link]("Displaying Message using EJB:");
[Link]("=================================");
[Link] ([Link] ( ));
[Link]("=================================");}}

Joseph NDONG FST/UCAD


Premier exemple EJB 3.0 (5/5)

En exécutant le client EJB, voici la sortie:

Running the EJB client ...


23 févr. 2010 [Link]
[Link] initDelegates
INFO: Using [Link]
as the delegate

Displaying Message using EJB:


=================================
Helloworld: version EJB
=================================

Joseph NDONG FST/UCAD


Notes

Le fichier [Link] est e fichier de configuration des EJBs, chaque EJB créé doit y
être configuré dans sa propre balise :<ejb> </ejb>, comme ceci:
<ejb-name>HelloWorldBean</ejb-name>  donne le nom de l’EJB
<jndi-name>java:global/ndong</jndi-name>  nom JNDI

EJB 3 utilise les annotations pour indiquer que l’interface est distante (@Remote)
et que le bean HelloWorldBean est un Bean Session sans états (@Stateless).

Joseph NDONG FST/UCAD


EJB 3.0 dans JBoss

Nous avons montré un exemple de EJB 3.0 avec un premier serveur d’application, Glassfish.
Maintenant, nous allons nous intéresser à un autre serveur: JBOSS.
Ici on considère JBoss Tools 3.0 pour Eclipse 3.4.2 .
Dans un premier temps, voyons son installation.
Il existe plusieurs façons de l’installer, je vais montrer ici l’installation automatique.
Vous devez disposer d’une connexion Internet.
1) Vous devez d’abord disposer du JDK 1.5 ou supérieur et Eclipse JEE (ici Ganymède)
2) Lancer Eclipse
3) Faîtes menu HELP  Software Updates
4) Cliquez sur l’onglet Available Software et ensuite sur le bouton Add Site
5) Dans la fenêtre qui apparaît, coller l’ URL [Link]
ou [Link]
6) Cliquez sur OK
7) Cette URL doit alors être rajoutée dans la liste des logiciels à installer
8) Cochez la case à cocher désignant cette URL et cliquez sur le bouton install
9) Laissez l’installation se faire grâce à Internet.
EJB 3.0 dans JBoss

Cette phase n’installe pas les librairies nécessaires à l’utilisation de JBoss. Donc il faut
Absolument aller dans [Link] et télécharger une version
stable de JBoss (ici j’ai pris la version [Link]).
Décompressez l’archive dans un répertoire compact de votre choix (évitez les noms de
répertoires contenant des espaces).
Ensuite, dans Eclipse, faîtes:

1) Menu Window Preferences


2) Cliquez sur le signe + devant Server pour dérouler l’arborescence
3) Cliquez sur Runtime Environments et cliquez sur le bouton Add
4) cliquez sur le signe +, devant JBoss et choisissez JBoss v5.0 et cliquez sur Next
5) Devant Application Server Directory, cliquez sur Browse et sélectionner, à partir du poste
de travail le répertoire d’installation de JBoss.
6) Terminer par OK

Joseph NDONG FST/UCAD


Premier exemple de EJB 3.0 dans JBoss

Créer un Project EJB : File  New  EJB Project.

Créer les classes suivantes: Note importante:


package cours; Il n’est pas nécessaire de faire aucune
import [Link]; configuration dans le fichier [Link].
Les annotations dans le code source gèrent
@Remote parfaitement le paramétrage de l’EJB.
public interface JSessionBeanRemote {
public String disHello( );
}

Joseph NDONG FST/UCAD


Premier exemple de EJB 3.0 dans JBoss

package cours;

import [Link];

/**
* Session Bean implementation class JSessionBean
*/
@Stateless
public class JSessionBean implements JSessionBeanRemote {

public String disHello ( ){


return "Testing EJB...Hello client! ";
}
}

Joseph NDONG FST/UCAD


Premier exemple de EJB 3.0 dans JBoss

package cours;
import [Link]; import [Link];
import [Link]; import static [Link];
public class TestEJB {
private static JSessionBeanRemote sessionBeanBean;
public static void main(String[] args) throws NamingException {
[Link] prop=new [Link]();
[Link](Context.INITIAL_CONTEXT_FACTORY,
"[Link]");
[Link](Context.URL_PKG_PREFIXES,"[Link]:[Link]" );
[Link](Context.PROVIDER_URL,"localhost:1099");
Context ctx = new InitialContext (prop);
Context tx = new InitialContext ( );
sessionBeanBean = (JSessionBeanRemote)[Link] ("JSessionBean/remote");
[Link] ("Displaying Message using EJB:");
[Link] ("=================================");
[Link] ("Bonjour : =" + [Link] ( ));
[Link]("================================="); }}
Premier exemple de EJB 3.0 dans JBoss

Créer le fichier de configuration JNDI dans le répertoire racine de votre application


Si votre projet s’appelle exempleEJB alors il doit se trouver dans /exempleEJB/ejbModule

[Link]=[Link]
[Link]=[Link]:[Link]
[Link]=localhost:1099

[Link]
Il faut ajouter un serveur JBOSS et y ajouter le projet .
Démarrer le serveur et lancer [Link]. Le résultat donnera:

Displaying Message using EJB:


=================================
Bonjour : =Testing EJB...Hello client!
=================================

Joseph NDONG FST/UCAD


EJB 3.0 + Servlet

Dans l’exemple précèdent, nous avons montré, comment une classe principale, on peut
exécuter un EJB.
Maintenant nous allons voir comment coupler EJB et Servlet.

Pour ce faire, il est nécessaire de créer d’abord un projet EJB, de le jarer et ensuite
créer un projet DWP (pour notre servlet) et y importer l’EJB.

Donc je suppose que le projet précédent est jarré et que le jar et dans le BUILD PATH
du projet DWP.

Voici le code de la Servlet… 

Joseph NDONG FST/UCAD


Type de projet Enterprise

Pour travailler convenablement et de façon plus sophistiquée


dans un projet couplant un DWP et un EJB Project, il serait
plus judicieux de créer un projet de type Entreprise.

Joseph NDONG FST/UCAD


package ejbservlet;
import [Link]; import [Link];
import [Link]; import [Link];
import [Link]; import [Link];
import [Link]; import [Link];
import [Link];
import [Link];
public class ServletEJBClient extends HttpServlet {
JSessionBeanRemote testSessionBean;
public void init (ServletConfig config) throws ServletException{
try {
Context tx = new InitialContext();
testSessionBean=(JSessionBeanRemote)[Link]("JSessionBean/remote");
} catch (Exception NamingException) { [Link](); }
}
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{ [Link]("text/html");
PrintWriter out = [Link]();
[Link] (" Test Servlet et EJB: " + [Link]());
}}

[Link]
Running EJB 3.0 + Servlet …

[Link] /testejbservlet /acces

Joseph NDONG FST/UCAD


PersistenceContext: accès BD

Utilisation d’un EntityManager pour gérer les unités de persistance associées aux sources
de données.
Configuration de l’ EntityManager dans le descripteur de déploiement [Link].

Ce fichier doit être situé dans le répertoire META-INF du projet EJB.

Nous donnons l’exemple d’un projet EJB de gestion de banque avec connexion à une
BD MySQL.

Vous aurez besoin:


- du driver de MySQL à mettre dans JBOSS_HOME\server\default\lib
- du fichier de configuration de la BD [Link] à mettre dans
JBOSS_HOME\server\default\deploy
Joseph NDONG FST/UCAD
PersistenceContext: accès BD

Le fichier [Link] ressemble à ceci:

<?xml version="1.0" encoding="UTF-8"?>

<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/Labanque</connection-url>
<driver-class>[Link]</driver-class>
<user-name>root</user-name>
<password></password>

<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources> Joseph NDONG FST/UCAD
PersistenceContext: accès BD: exemple

<?xml version="1.0" encoding="UTF-8"?>


<persistence xmlns="[Link]
xmlns:xsi="[Link]
xsi:schemaLocation="[Link] [Link]
/persistence/persistence_1_0.xsd"
version="1.0">

<persistence-unit name="joegestionbank">
<jta-data-source>java:/MySqlDS</jta-data-source>
<properties>
<property name="[Link]" value="[Link]"/>
<property name="[Link]" value="update"/>
</properties>
</persistence-unit>
</persistence>
Joseph NDONG FST/UCAD
PersistenceContext: accès BD: exemple

Différentes étapes pour la mise en place de l’application:

1) Définir la classe de l’Entity à mapper dans la BD


2) Définir l’interface distante de l’EJB
3) Définir le Bean d’implémentation de cette interface
4) Définie une Bean Session pour exploiter les services

5) Définir un client

Joseph NDONG FST/UCAD


Définition du Bean Entity

package [Link];
import [Link], [Link], [Link];
@Entity //Annotation indiquant qu'il s'agisse d'une Entité
public class Compte implements Serializable {
@Id //Annotation indiquant que numero est la clé primaire de Compte
private String numero, prenom, nom;
private double solde;
//Constructeur par defaut OBLIGATOIRE
public Compte ( ){}
public Compte (String numero, String prenom, String nom, double solde) {
[Link]=numero;
[Link]=prenom;
[Link]=nom;
[Link]=solde;
}
public String toString ( ) {
return "Compte du titulaire n°" + [Link] + " : " + [Link] +" "+[Link];
}
// Méthodes Setters et guetters de la classe
}
Définition de l’interface distante

package [Link];

import [Link];

import [Link];
@Remote
public interface BankInterface {
public void creerCompte (Compte c);
public Compte rechercherCompte (String id);
public List<Compte> listerTousLesComptes ( );
}

Joseph NDONG FST/UCAD


Définition du Bean Session

package [Link];

import [Link], [Link], [Link];


import [Link];
@Stateless
public class GestionDesComptes implements BankInterface {
@PersistenceContext
private EntityManager em; //L'Entity Manager
public void creerCompte(Compte produit) {
[Link] (produit);
}
public Compte rechercherCompte (String id) {
return [Link] ([Link], id);
}
public List<Compte> listerTousLesComptes() {
return [Link] ("SELECT p FROM Compte p ORDER BY [Link]").
getResultList ( );
}} Joseph NDONG FST/UCAD
Un exemple de client
package [Link];
import [Link], [Link], [Link].*;
public class ClientBank {
public static void main(String [ ] args) {
try {
Context context = new InitialContext();
BankInterface bank = (BankInterface)
[Link] ("GestionDesComptes/remote");

[Link] (new Compte ("700", "Amie", "Diop", 15000));

List<Compte> cp = [Link]();
for (Iterator<Compte> iter = [Link] ( ); [Link] ( );) {
Compte c = [Link]();
[Link](c); //Invocation de toString ( )
}
} catch ([Link] ne) {
[Link]();
}}}
Joseph NDONG FST/UCAD

Vous aimerez peut-être aussi