design pattern jee
DESCRIPTION
Le support d'un Workshop qui présente les design pattern d'architecture JEE pour illustrer les différents éléments d'un Framework. Réalisé à l'aide de l'excellent "Head First Servlets & JSP"TRANSCRIPT
Design Pattern Java EE – L’essentiel By Yannick
• Sommaire Tour d’horizon de ce que l’on va aborder…
Design Pattern dans l’archi JEE Une vue d’ensemble des design de Sun
Les design pattern MVC Transfert Object
Business Delegate Intercepting Filter
Service Locator Front Controller
Petit test à chaud !! Ou comment voir si on a suivi ^^
Intro
DP
Quizz
•Achitecture n-tiers
La base… •MVC
Model • Représente les données de l'appli • Répond aux requêtes de la vue • Notifie la vue des changements
View • Représentation du modèle • Interface avec laquelle l'utilisateur interagit • Reçoit les actions de l'utilisateur
Controller • Gère l'interface entre le modèle et le client •Lie les actions utilisateurs à la mise à jour du modèle • Sélectionne la vue (réponse) • Un pour chaque fonctionnalité
Changement
d’état
Choix de la vue
Actions utilisateurs
Notifications de changement
Requête d’état
POJO
JSP
Servlet
Ou comment gérer le code dupliqué… •MVC, dans une appli web « Réelle »
Controller
Model
JSP
Controller Controller
Controller
JSP JSP
JSP
Model Model
Model
Détail compte
Identification
…
…
• Récupère les paramètres de la request
• Valide les paramètres
• Récupère le Modèle qui nous intéresse
• Place le Modèle dans la request
• Invoque la vue
In the real life ^^ •Front controller
Request
Front Controller
<xml> <validate> </validate> <mapping> </mapping> </xml>
JSP
Model
Config XML
Classes de validation
Classes d’ actions
FormBean
Action Object
Action Servlet
Struts-config.xml
•MVC Quand on est que sur une VM
Oui mais voilà, et quand le
modèle
n’est pas sur le
même serveur ???
JNDI
• Java Naming and Directory Interface
• Le but c’est de rajouter un élément à l’architecture pour centraliser la location des objets (un annuaire)
• Si on veut partager un objet on l’enregistre sur l’annuaire
• Si on en cherche un, on regarde dans l’annuaire
• Remote Method Invocation
• Le but est de récupérer un objet au travers du réseau
RMI
• Les outils du « remote » Ou les outils pour comprendre les pattern « remote »
• MVC avec Model « remote » Un premier jet
Oui mais voilà, des fois on est
« remote » Et des fois pas
•Le pattern Business Delegate Ou comment cacher la complexité du JNDI et RMI
• Réduit le couplage entre les couches présentation et Business • Encapsule la recherche dans l’annuaire • Proxy pour le client
Et cette fois il est où
le code dupliqué?
• Le Pattern Service Locator Ou comment éviter de dupliquer le code du « lookup »
• MVC avec Model « remote » Deuxième jet
Où est le problème ?
Ca c’est 1000 fois plus lent qu’un appel local !!
• Le pattern DTO (Data Transfert Object) Ou à quoi sert la sérialisation…
try {
TransfertObject o = serviceStub.serviceMethod(param);
} catch (RemoteException e) {
throw new ApplicativeException();
}
• Le Pattern Intercepting Filter Ou comment rajouter de l’information partout sans tout changer…
• Peut intercepter et/ou modifier la requête avant qu’elle arrive à la servlet • Peut intercepter et/ou modifier la réponse avant qu’elle soit retournée au client • Déclarée dans le web.xml • Les filtres peuvent être chaîné