Académique Documents
Professionnel Documents
Culture Documents
2
Entreprise Java Beans
4
Accés aux EJBs - local ou remote
Selon d'où un client invoque un EJB session, la classe de ce dernier devra :
Elle pourra aussi n’implémenter aucune interface pour le cas d'accès local.
5
Accès local - Injection de dépendances
• Avec l’injection des dépendances, on n’invoque plus le constructeur nous même dans notre code,
mais c’est plutôt le conteneur EJB qui invoque le constructeur.
• Pour injecter une dépendance il suffit d’annoter l’attribut avec @EJB.
Par exemple :
@EJB
private Voiture voiture; //La classe Voiture devra être un EJB
6
Accès Remote à un EJB
Client
Wildfly
Service
Java JNDI
1
JVM
Client
Java Conteneur EJB
2
JVM EJB
Remote
…...
Client
Java
n
JVM
JVM 7
Accès distant à un EJB - JNDI (Java Naming and Directory Interface)
String jndiName="firstejb/HelloService!tn.esprit.firstejb.services.HelloServiceRemote";
Context context = new InitialContext();
HelloServiceRemote proxy=(HelloServiceRemote) context.lookup(jndiName);
System.out.println(proxy.sayHello("hello"));
8
Session Bean - Stateless (sans état)
• Le conteneur conserve en mémoire un certain nombre d’instances (un pool) de chaque EJB sans état et
les partage entre les clients.
• Lorsqu’un client appelle une méthode d’un bean sans état, le conteneur choisit une instance du pool et
l’affecte au client.
• Lorsque le client en a fini, l’instance est retournée dans le pool et pourra être réutilisé par un autre client.
9
Session Bean - Stateless - Lifecycle
10
Session Bean - Stateful (avec état)
• Quand un client invoque un EJB avec état sur le serveur, le conteneur EJB
doit fournir la même instance a chaque appel de méthode.
11
Session Bean - Stateful - Lifecycle
12
Session Bean - Singleton
• Un EJB singleton est simplement un bean de session qui n’est instancié
qu’une seule fois par application.
13
Création du premier EJB (sayHello)
Client
Wildfly
proxy.sayHello() Service
Java JNDI
1
JVM
“Hello”
Client
Java Conteneur EJB
2
JVM EJB
ejb.sayHello()
Remote
…...
Client
Java
n
JVM
JVM 14
Création du premier EJB (sayHello)
1) File->new->project; Maven Project
4) Finish
maven->update project
9)Créer la classe
HelloService qui implémente
les deux interfaces
16
Création du premier EJB (sayHello)
10)clic droit sur le serveur wildfly
et ajouter le projet en question,
puis “finish”.
17
Création du client java (appel a sayHello)
1) File->new->project; Maven Project
4) Finish
19
Compte bancaire - 1 client Wildfly
lookup(jndiname)
Service JNDI
Reference sur CompteBancaireRemote
Connected
Appel 1 : Versement +20
Conteneur EJB
Solde = 20
Inst
Client Appel 2 : Retrait -10 Inst 2
Java 1
Solde = 10
Inst
3
Appel 3 : Versement +10
Solde
Inst n initiale
Solde = 20
=0
Appel 4 : Retrait -10
Pool d’instances
Solde final = 10
Disconnected
JVM JVM
20
Compte bancaire - n client Wildfly
Client Java Service JNDI
1
…...
JVM Solde = 10
Conteneur EJB
Client Java
2 …... Inst
Inst
1 2
JVM Solde = 10
Inst
3
…...
Inst n
JVM Solde = 10 21
JVM