II - EJB 157 - PowerPoint PPT Presentation

About This Presentation
Title:

II - EJB 157

Description:

Les Ejb Les EJB sont CORBA ce qu est le circuit pr cabl la carte m re lectronique – PowerPoint PPT presentation

Number of Views:62
Avg rating:3.0/5.0
Slides: 55
Provided by: insa153
Category:

less

Transcript and Presenter's Notes

Title: II - EJB 157


1
Les Ejb
Les EJB sont à CORBA ce qu?est le circuit
précablé à la carte mère électronique
2
Introduction
  • Les applications monolithique
  • Pas de réutilisation des modèles de données
  • Pas de réutilisation des modèles de traitements
  • Les applications C/S (au sens large)
  • Réutilisation des modèles de données
  • Pas de réutilisation des modèles de traitement
  • Les applications à base de middleware
  • Réutilisation des modèles de données et de
    traitements
  • Notion de composants serveurs

3
Les serveurs d'applications
4
Architectures à Objet Distribués
Services Métiers
Application 1
Application 2
Services d'infrastructure
5
Serveur de composants de base
Services Métiers
Application 1
Services standard d'infrastructure
jts
cycle vie
Application 2
jdbc
version
6
Serveur de composants intégré
Composants Métiers
Application 1
Logique métier
container
infrastructure
Gestion automatisée
Service d'infrastructure de base
Application 2
jdbc
jts
version
cycle vie
7
Services du container d'EJB
  • Services internes
  • Gestion de la charge du serveur
  • (cycle de vie, accès client, passivation...)
  • Service de nommage
  • Gestion des accès aux objets métiers
  • Services externes
  • Gestion du mapping sur BD relationnelle
  • Gestion des transactions
  • Gestion des échanges de messages

8
Serveur Web dynamique
Serveur Web
Application 1
Application 2
9
Serveur Web dynamique
Serveur Web
Application 1
CGI
CGI
Application 2
10
Serveur Web dynamique
Serveur Web
Application 1
LiveWire
Php
Application 2
11
Serveur Web dynamique (Servlets / JSP)
Serveur Web
Application 1
Servlets
Servlets
Application 2
12
Services du container de pages Web
  • Servlet / JSP
  • Services internes
  • Gestion de la charge du serveur
  • cycle de vie
  • Gestion des autorisations d'accès
  • Services externes
  • API Java

13
Un serveur d'application
  • Application Java
  • Hébergeant
  • Des containers
  • Pages Web
  • Composants Métier (EJB)
  • Des services
  • Nommage
  • Base de données/Mapping sur Base
  • Moniteurs transactionnels
  • Déploiement ...
  • Des API sur les services
  • JDBC/JTS/JMS...

14
The J2EE Architecture
Applet container
Web container
EJB container
J2SE
http/ssl
Java Mail
Java Mail
JMS
JMS
Application Client Container
JNDI
JNDI
JDBC
JDBC
RMI/IIOP
RMI/IIOP
JTA
JTA
JAF
JAF
J2SE
J2SE
rmi/ssl
JMS
JNDI
JDBC
RMI/IIOP
J2SE
15
Les offres de serveur d'applications
  • Serveur d'application J2EE
  • Weblogic BEA,WebSphere IBM, Iplanet Sun, Oracle
  • WebObject (Jonhatan/Jonas) INRIA
  • Jboss (Free)
  • Autres serveurs d'applications
  • Microsoft .net
  • Zope (Python)
  • Serveur CORBA (OrbixWeb)

16
Les serveurs d'EJB
17
Serveur de composants intégré
Composants Métiers
Application 1
Logique métier
container
infrastructure
Gestion automatisée
Service d'infrastructure de base
Application 2
jdbc
jts
version
cycle vie
18
Serveurs distribués
Container
Container
Appli 1
2
1
Services
Services
Appli 2
jdbc
jdbc
19
Enterprise JavaBeans
  • Enterprise Java Beans
  • Composants logiciels serveur
  • Objectif
  • Standardiser le développement et le déploiement
    de composants serveurs écrits en Java
  • Le développement ne se fait que sur l'interface
    métier de l'objet
  • Le développeur ne prend en compte que la logique
    métier de l'EJB. Le reste est prise en charge par
    le containeur.

20
Principe de conception des EJB
  • Le modèle des EJB est fondé sur trois concepts
    pour la conception de systèmes distribués
  • Approche de serveurs sans-états
  • Approche orientée session
  • Approche objet persistant
  • Les spécifications EJB parlent de
  • Session Beans
  • Stateless Session Bean
  • Statefull Session Bean
  • Entity Beans
  • Container-Managed Persistence
  • Bean-Managed Persistence

21
Le Bean "stateless Session"
  • Leurs comportements
  • Fournissent un service pour un seul utilisateur
  • Ne maintiennent pas d'état par rapport au client
  • Ne survivent pas à un crash du serveur d'EJB
  • Sont plutôt destinés à vivre sur une courte
    période
  • Deux instances d'un même bean  sans état  sont
    identiques

22
Les Bean "statefull Session"
  • Leurs comportements
  • Interagissent d'une manière conversationnelle
  • Maintiennent un état sur le client connecté
  • Ne survivent pas à un crash du serveur d'EJB
  • Vivent rapidement
  • Une instance est hébergée par un seul thread
  • Une instance peut être partagée par plusieurs
    clients

23
Stateful vs. Stateless
  • Un bean stateful maintient un état
    conversationnel qui est récupéré entre deux
    invocations
  • Un bean stateless n'a pas d'état entre les appels
    sur ses méthodes

24
Exemples de Beans Session
  • Session Stateless
  • Un EJB qui calcule le cos(x)
  • Un décompacteur
  • Un EJB qui vérifie si une donnée est valide
  • Un EJB qui calcule le coût d'une communication
    téléphonique
  • Session Statefull
  • Un EJB qui gère une réservation
  • Un EJB qui commande les pièces détachées d'un
    véhicule
  • Un EJB qui gère le flux d'information d'un centre
    d'appel

25
Stateful vs. Stateless EJB
client
client
serveur
container
skell
OM
client
client
Les clients partagent le même contexte
client
client
serveur
container
client
OM
skell
OM
client
OM
Un client possède son propre contexte sur un EJB
stateful
26
Etat dun EJB Session Stateful
  • Létat d'un EJB de type stateful est défini comme
    la fermeture transitive des objets visibles par
    les champs du bean

Instance d'un chat
int age5
Instance d'une souris
capture
int age7
27
EJB Stateful identiques ?
  • Deux EJB stateful sont identiques s'ils partagent
    le même contexte client !

client
client
serveur
container
skell
OM
client
client
Les clients partagent la même référence distante
28
Comment obtenir la même référence distante ?
client
client
Ce client crée la nouvelle instance
1
serveur
container
skell
Le client dépose le handle dans une base
2
OM
Ce client récupère le handle
3
Le client utilise le handle pour créer la même
référence distante
4
client
client
29
Les EJB Entité (Entity EJB)
  • Leurs comportement
  • Ils représentent les données persistantes
  • Ils survivent à un crash
  • Plusieurs clients peuvent utiliser des EJB qui
    "pointent" sur les mêmes données
  • L'instance EJB contient une copie des données du
    système de stockage

30
Gestion de la persistance
  • Les attributs d'un objet doivent être déposés sur
    un support persistant
  • Exemples de supports de persistance
  • Sérialisation
  • Accès à une base sur le JDBC (mappage)

Client id98282 nomfrenot adresse34 villevilleu
rbanne
31
Partage d'EJB entity
  • Quand plusieurs clients partagent un EJB entity
    ils
  • reçoivent leurs propres instance d'EJB
  • partagent les données sous-jacentes
  • n'ont pas à gérer la synchronisation sur les
    données

client
client
serveur
container
client
OM
skell
OM
client
OM
32
Type de persistance
  • Il y a deux mode de gestion de la persistance
  • Container-Managed Persistence (CMP)
  • Bean-Managed Persistence (BMP)

1
container
OM
CMP
OM
BMP
33
EJB Entité
  • Exemples
  • Un EJB qui représente les statistiques dun site
  • Un EJB qui représente l'évolution d'une cotation
  • Un EJB qui représente une séquence du génôme
  • ...

34
Rôle du développeur d'EJB
  • Définition des interface distantes
  • L'interface  Remote   contient les opérations
     métier  d'un EJB
  • Définition de l'usine de fabrication des EJB
  • L'interface  Home  d'un EJB
  • Est utilisée par les clients pour créer et/ou
    retirer un EJB
  • Fournit des méta informations sur l'EJB
  • Est partagée par tous les clients de l'EJB
  • Voit son stub d'invocation placé dans le service
    de nommage au déploiement
  • Définition du corps de l'EJB
  • Implantation concrète des services métier

35
Exercice
  • Un EJB qui implante C-MesCources ?
  • Un EJB qui gère un cours en vidéo ?
  • Un EJB qui gère le passage du TOEIC ?
  • Un EJB qui calcule de la vitesse de rotation des
    planètes ?
  • Un EJB qui représente le compte bancaire d'une
    personne ?
  • Un EJB qui gère un appel de support technique ?
  • Un EJB qui calcule la valeur de remboursement
    d'un prêt ?
  • Un EJB de gestion de chaîne Hi-Fi ?
  • Un EJB qui liste les personnes connectées sur un
    réseau ?
  • Un EJB qui contrôle la validité d'un cookie d'une
    page Web ?
  • Un EJB qui représente un document Word ?
  • Un EJB qui représente une enchère sur un site ?

36
Le fonctionnement global
OM
37
Deux principes clés les interfaces
  • Interface  home 
  • Interface de l'usine de fabrication des OM
  • Est utilisée par les clients pour créer un EJB
  • Est utilisée par un client pour retirer un EJB
  • Fournit des méta informations sur l'EJB
  • Est partagée par tous les clients de l'EJB
  • Voit son stub d'invocation placé dans le service
    de nommage au déploiement
  • Interface  remote 
  • Représente l'OM distant (stub)

38
Les optimisations
39
Pooling d'objets
  • Un serveur d'application peut créer un pool
    d'objets  nus  qui peuvent être utilisés quand
    des requêtes sont faites

EJB pool
40
La passivation
  • La passivation est le fait de placer un EJB sur
    un support secondaire
  • La passivation
  • A lieu quand un EJB dépasse son idle-timeout
  • Permet à un serveur d'application de réclamer des
    ressources
  • Placer une instance sérialisée de l'EJB dans son
    support de stockage

41
Pooling / Passivation sur Weblogic
Ne peut pas exc?der maxBeansInCache
Objets passiv?s
EJB cache
Un client reoit CacheFullException si le cache
est plein et rien ne peut ?tre passiv?
Un EJB est passiv? s ?il a d?pass?
idleTimeoutSeconds
Les objets sont plac?s dans le pool libre quand
les clients en ont fini
Ne peut pas exc?der maxBeansInFreePool
Free Pool
42
Application et logique métier
Logique d'application
Logique métier
Accès données
IHM
DBMS
Ett
Ses
Ses
Ses
Ses
Ett
EJB Container
Nommage, Sécurité, Cycle de vie, Accès
concurrents, Transaction, Persistance
Serveur d application
Distribution, Equilibrage de charge, Tolérance de
pannes
43
Les rôles dans le monde EJB
  • Fournisseur de serveur d'application
  • Fournit le serveur intégré avec des services de
    base
  • Fournisseur de container
  • Fournit les containeurs d'EJB
  • Fournisseur d'EJB
  • Expert dans un domaine vertical crée les
    composants EJB
  • Développeur d'application
  • Assemble les applications à partir de composants
    EJB préfabriqués
  • Spécialiste du déploiement
  • Déploie les applications
  • Maîtrise les principes d'architecture

44
Cycle de développement
  • Implantation de la base de données (opt.)
  • Implantation des EJB (SL/SF/Entity)
  • Implantation des JSP

45
Cycle de développement d'un EJB session
  • 1) Définir les interfaces métier
  • Interface Remote
  • 2) Définir les méthodes de gestion du cycle de
    vie
  • Interface Home
  • 3) Définir les caractéristiques intrinsèques du
    bean dans un fichier de description
  • 4) Définir les caractéristiques de déployement
  • 5) Déployer le bean
  • 6) Réaliser le(s) clients qui utilisent le service

46
Interface Métier
  • Interface Remote de l'EJB fibonacci
  • package exemple.fibonacci
  • public interface Fibonacci extends
    javax.ejb.EJBObject
  • public int getFibonacciNumber(int n) throws
    java.rmi.RemoteException

47
Interface Home
  • Interface Home de l'EJB fibonacci
  • package exemple.fibonacci
  • import javax.ejb
  • import java.rmi
  • public interface FibonacciHome extends EJBHome
  • public Fibonacci create() throws
    CreateException, RemoteException

48
Développement du Bean
  • package exemple.fibonacci
  • import java.rmi.
  • import javax.ejb.
  • public class FibonacciBean implements SessionBean
  • public void ejbPassivate()
  • public void ejbActivate()
  • public void ejbRemove()
  • public void setSessionContext(SessionContext
    ctx)
  • public void ejbCreate()
  • System.out.println("Cet EJB Fibonacci est
    créé"
  • public int getFibonacciNumber(int n)...

49
Descripteur du Bean
  • lt?xml version"1.0"?gt
  • lt!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems,
    Inc.//DTD Enterprise JavaBeans 2.0//EN"
    "http//java.sun.com/dtd/ejb-jar_2_0.dtd"gt
  • ltejb-jargt
  • ltenterprise-beansgt
  • ltsessiongt
  • ltejb-namegtFibonaccilt/ejb-namegt
  • lthomegtexemple.fibonacci.FibonacciHomelt/ho
    megt
  • ltremotegtexemple.fibonacci.Fibonaccilt/remo
    tegt
  • ltejb-classgt exemple.fibonacci.FibonacciBe
    anlt/ejb-classgt
  • ltsession-typegtStatelesslt/session-typegt
  • lttransaction-typegtContainerlt/transaction-
    typegt
  • lt/sessiongt
  • ...
  • lt/enterprise-beansgt
  • lt/ejb-jargt

50
Descripteur du déploiement
  • lt?xml version"1.0"?gt
  • lt!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA
    Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN"
    "http//www.bea.com/servers/wls600/dtd/weblogic-ej
    b-jar.dtd" gt
  • ltweblogic-ejb-jargt
  • ltweblogic-enterprise-beangt
  • ltejb-namegtfibonaccilt/ejb-namegt
  • ltstateless-session-descriptorgt
  • ltpoolgtltmax-beans-in-free-poolgt100lt/max-beans
    -in-free-poolgtlt/poolgt
  • lt/stateless-session-descriptorgt
  • lttransaction-descriptorgt
  • lttrans-timeout-secondsgt300lt/trans-timeout-s
    econdsgt
  • lt/transaction-descriptorgt
  • ltjndi-namegtfibonnacilt/jndi-namegt
  • lt/weblogic-enterprise-beangt
  • lt/weblogic-ejb-jargt

51
Déploiement du bean
  • Eventuellement (pré-compilation)
  • Jar cp
  • Au déploiement
  • Inscription de l'Usine (interface Home) sur le
    containeur
  • Dépôt du stub de manipulation de l'Usine sur le
    service de nommage

52
Développement d'un client
  • public class Client
  • public static void main(String argv)
  • try
  • FibonacciHome home(RobotHome)context.lookup
    ("fibonaci")
  • Fibonacci jacqueshome.create()
  • catch(NamingException e)
  • catch(CreationException e)
  • catch(RemoteException e)

53
Développement d'un client JSP
  • lthtmlgtltheadgtlttitlegt lt pagetitle gt
    lt/titlegtlt/headgt
  • lth2gtltfont colorDB1260gtlt pagetitle
    gtlt/fontgtlt/h2gt
  • lt_at_ page import"edt.matiere."gt
  • lt!String pagetitle "JSP emploi du temps Les
    FaceAFaces"gt
  • lttry
  • ctx getInitialContext()
  • homeFib (FibonnacciHome)
    ctx.lookup("fibonnaci")
  • uneSuitehomeFib.create()
  • out.println("fib(7)"uneSuite.getFibonacciNumbe
    r(7))
  • catch(Exception e)e.printStackTrace()
  • gt
  • lt/bodygtlt/htmlgt

54
Points forts
  • Notion de container
  • Robustesse, standardisation, évolution
  • Interface de développement standardisées
  • Pas / Peu de phase de prise en main
  • Automatisation de nombreuses tâches
  • Gestion de la persistance, transactions
  • Intégration à l'API java
  • Marché explosant
Write a Comment
User Comments (0)
About PowerShow.com