EJB-COURS Fichier

publicité
Les composants Métiers
Carine Souveyet
Introduction
n 
Les composants Métiers
n 
n 
n 
Où se placent-ils dans l’architecture N-tier ?
A quoi ils servent ?
Par quel type de système sont-ils hébergés ?
Services Invariants
Introduction -
où se placent-ils?
Browser
DIFFUSION
Service
d’
admin.
Pages HTML
Composants
métiers
$$
Service
de
sécurité
Enterprise Application Integration
...
Servic
e
extern
e
...
...
BDD LDAP
SGBDR
ERP
...
...
...
Mainframe Progici
el
Introduction -
où se placent-ils?
Composants Web
Couche « Gestion de
l’Utilisateur »
middleware
Couche Métier
Couche présentation
(applications front-office)
Composants Métiers
Couche Sources de Données
(applications back-office)
Introduction –
A quoi servent-ils?
middleware
Couche « Gestion de
l’Utilisateur »
Couche Métier
Couche Sources de Données
(applications back-office)
Couche présentation
(applications front-office)
Bloc : applications front-office
Bloc : applications
back-office
Composants Métiers
Introduction –
A quoi servent-ils?
Applications back-office hétérogènes, distribuées,
Couche Métier => Façade Métier
Cohérence globale des applications back-office
middleware
Equipe organisée en 3 compétences
Couche « Gestion de
l’Utilisateur »
Couche Métier
Couche Sources de Données
(applications back-office)
Couche présentation
(applications front-office)
Bloc : applications front-office
Bloc : applications
back-office
Composants Métiers
Introduction –
Quels systèmes les
hébergent ?
Composants Web
Couche « Gestion de
l’Utilisateur »
Serveurs d’application
Couche Métier
Couche présentation
(applications front-office)
Composants Métiers
Couche Sources de Données
(applications back-office)
Entreprise JavaBeans
n 
Deux versions Incompatibles
§  Version 2.x :
§  Conteneur lourd
§  Composants représentant des programmes et des
données
§  Chaque bean a un home et un remote interfaces
(implémentés comme des objets java)
§  Version 3.x :
§  Conteneur léger
§  Composants représentant uniquement des
programmes
§  Les données sont gérés dans des conteneurs de
persistances
§  Chaque bean est une classe Java standard
§  Chaque bean a deux interfaces remote et local
(implémentés comme des interfaces Java)
EJB 2.x : Server Framework
Model
Les « EJB » sont
placés dans un EJB
container.
Databases
&
Le client doit pouvoir
aux Backend
« Laccéder
’EJB container
» estSystems
EJBpar
Server
services offerts
un « EJB
l’environnement
d’exécution des
EJB Container
client
Les « EJB » accèdent aux serveurs
serverou
». à des
EJBs.
(comme
le « servlet
bases de données
Transactions
« L’EJB
container
» est accessible
container
» pour les servlets).
applications existantes (backoffice).
en mode client/server
grâce à
Sécurité
« l’EJB server ». Il gère la sécurité
et les transactions (JTS).
« Object architecture for component-based,
transaction oriented, distributed entreprise computing »
EJB 2.x :
Vue générale du framework
Objets
métiers
servlet Container
lient
HTTP server
EJB Container
Databases
&
Backend Systems
Logique applicative relative
EJB Server
au Web
(framework struts)
Communication via le protocole
HTTP
Objets distribués
ou accès bases
Objets distribués : technique
de
données : technique « bus
« bus logiciel » (RMI,de
Corba…)
à Usage synchrone logiciel » ou JDBC
EJB 2.x : Concepts
Attention ! Schéma des concepts (uniquement)
EJB 2.x : Concepts
Entreprise
JavaBean
Session Bean
Programmes
ou
transactions
métiers
Entity Bean
MessageDriven
Bean
Données
métiers sous
format Objet
Usage
asynchrone
(JMS)
EJB 2.x - Bilan
n 
Bilan
n 
n 
n 
n 
n 
SessionBean : programme qui a un impact sur les
applications back-office
EntityBean : données des applications back-office stockées
sous forme d’objet
EntityBean : peuvent représenter la vue métier sur des
données éparpillées sur plusieurs applications back-office
Echec du concept d’EntityBean à cause de la performance
de la persistance implémentée dans les serveurs (noyau
relationnel utilisé pour stocker des données oo à accès
hiérarchique)
Utiliser uniquement SessionBean et limiter l’usage des
entityBeans à des données peu nombreuses et peu
profondes
EJB 3.x EJB 3.x
SessionBean
Conteneur EJB : serveur J2EE
Changements
Conteneur de Persistance
EntityBean
Conteneur Léger : hébergeable n’importe où
Exemples de « Session Bean »
Session Bean
Converter
Bean
CartBean
Exemple : Le « ConverterBean» peut être vu comme un
Service métier demandé par un client lors de sa connexion
à un site boursier. C’est un exemple de « sessionBean »
(fonctions ou procédures métiers invoquées par un acteur
utilisant une application de type FrontEnd
Exemple de « Session Bean »
Implements
<<ConverterRemote>>
ConverterBean
Implements
Session Bean
(classe Java)
<<ConverterLocal>>
Exemple de « Session Bean »
Implements
<<ConverterRemote>>
ConverterBean
Implements
Interfaces utilisées
par les clients
(Interface Java)
<<ConverterLocal>>
Exemple de « Session Bean »
Implements
<<ConverterRemote>>
ConverterBean
Implements
Remote Interface =>
Connexion distante entre
EJB et client
<<ConverterLocal>>
Exemple de « Session Bean »
Implements
<<ConverterRemote>>
ConverterBean
Implements
Local Interface => EJB et
client exécutés dans la
même JVM
<<ConverterLocal>>
Session Bean : ConverterBean
package ejb;
import java.math.BigDecimal;
import javax.ejb.Stateless;
@Stateless
public class ConverterBean implements, ConverterRemote
ConverterLocal {
public BigDecimal dollarToYen(BigDecimal dollar) { ….}
public BigDecimal yenToEuro(BigDecimal yen) {…..}
}
Session Bean : ConverterBean
package ejb;
import java.math.BigDecimal;
import javax.ejb.Stateless;
@Stateless
Méthodes métiers
déclarées dans les
interfaces et implémentés
dans le bean
public class ConverterBean implements, ConverterRemote
ConverterLocal {
public BigDecimal dollarToYen(BigDecimal dollar) { ….}
public BigDecimal yenToEuro(BigDecimal yen) {…..}
}
Session Bean : ConverterBean
package ejb;
import java.math.BigDecimal;
import javax.ejb.Stateless;
@Stateless
Annotations du code Java
pour décrire le type de
ConverterBean
public class ConverterBean implements, ConverterRemote
ConverterLocal {
public BigDecimal dollarToYen(BigDecimal dollar) { ….}
public BigDecimal yenToEuro(BigDecimal yen) {…..}
}
Exemples de « Session Bean »
Session Bean
Converter
Bean
CartBean
Exemple : Le « CartBean » manipulé dans une session
d’achat électronique peut être considéré comme un bean de type
Session (données temporaires gérées en variables sessions au
niveau du serveur Web et relatives à un client)
Exemple de « Session Bean »
Implements
<<CartRemote>>
CartBean
Implements
<<CartLocal>>
Session Bean : CartBean
@Stateful
public class CartBean implements CartRemote, CartLocal {
private String customerName;
private String customerId;
private Vector contents;
Méthodes
Métier
public void addBook(String title) { contents.add(title);}
public Vector getContents() { return contents;}
public void removeBook(String title) throws BookException {…}
public void remove() {contents = null;}
public void initialize(String person) throws BookException {…}
public void initializes(String person, String id) throws BookException {…}
}
Session Bean : CartBean
@Stateful
public class CartBean implements CartRemote, CartLocal {
private String customerName;
Mémoire
private String customerId;
dépendante
private Vector contents;
du client
public void addBook(String title) { contents.add(title);}
public Vector getContents() { return contents;}
public void removeBook(String title) throws BookException {…}
public void remove() {contents = null;}
public void initialize(String person) throws BookException {…}
public void initializes(String person, String id) throws BookException {…}
}
Session Bean : CartBean
@Stateful
public class CartBean implements CartRemote, CartLocal {
Annotation
private String customerName;
pour le type de
private String customerId;
private Vector contents;
Session Bean
public void addBook(String title) { contents.add(title);}
public Vector getContents() { return contents;}
public void removeBook(String title) throws BookException {…}
public void remove() {contents = null;}
public void initialize(String person) throws BookException {…}
public void initializes(String person, String id) throws BookException {…}
}
Session Bean
n 
Il existe deux types de « SessionBean »
n 
n 
« Stateful Session Bean » : ils portent des
données temporaires spécifiques au client utilisant
le Bean. (exemple « ShoppingCartBean »). Ils
portent un état « conversationnel » et ils sont
utilisés par un seul client.
« Stateless Session Bean » : ils ne portent
aucune donnée mais fournit un ensemble
fonctions métiers (exemple « ConverterBean ». Ils
ne sont pas spécifiques à un client.
Caractéristique des Sessions
Beans
n 
Transactions métiers
n 
n 
n 
n 
Méthodes de type Session Bean contenant des
actions impactant plusieurs applications
Caractéristiques ACID (atomique, cohérence,
Isolation et durable) sur ces méthodes =>
Transactions
Transactions métiers = Transactions distribuées
sur plusieurs applications back-office
Façade Métier => garantie la cohérence de
l’ensemble des applications back-office
Caractéristique des Sessions
Beans
n 
Transactions métier
1
ENT
2
Apogée
3
CROUS
4
Messagerie
Inscription d’un nouvel étudiant
(méthode métier)
Cohérence globale du SI
(toutes les opérations ou pas
du tout)
Architectures avec les EJB
Composant
Web
Middleware OO
Composant
Web
Middleware OO
SessionBean
EntityBean
EntityBean
Conteneur EJB 2.x
SessionBean
Conteneur EJB 3.x
EntityBean
EntityBean
Conteneur Persistance
Architectures avec les EJB
Composant
Web
Middleware OO
Composant
Web
Middleware OO
SessionBean
Conteneur EJB 2.x
SessionBean
Conteneur EJB 3.x
Résumé
n 
Les composants Métiers
n 
n 
n 
n 
n 
n 
n 
n 
Objets distribués – usage synchrone
Façade Métier
Conteneur léger
Usage d’annotations pour décrire les types
de EJB
Session Beans à Transactions distribuées
Entity Beans à Persistance OO
MessageDriven Beans à usage asynchrone
Plusieurs architectures d’usage des EJBs
Exercice EJB
Application
Struts (MVC)
EJB
Session Bean
BD
Cotation
LookUpAction
(controller)
CotationBean
(Session Bean)
ModeleImpEJB
(model)
Téléchargement