Design Pattern JEE

16
Design Pattern Java EE – L’essentiel By Yannick

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 of Design Pattern JEE

Page 1: Design Pattern JEE

Design Pattern Java EE – L’essentiel By Yannick

Page 2: Design Pattern JEE

• 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

Page 3: Design Pattern JEE

•Achitecture n-tiers

Page 4: Design Pattern JEE
Page 5: Design Pattern JEE

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

Page 6: Design Pattern JEE

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

Page 7: Design Pattern JEE

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

Page 8: Design Pattern JEE

•MVC Quand on est que sur une VM

Oui mais voilà, et quand le

modèle

n’est pas sur le

même serveur ???

Page 9: Design Pattern JEE

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 »

Page 10: Design Pattern JEE

• MVC avec Model « remote » Un premier jet

Oui mais voilà, des fois on est

« remote » Et des fois pas

Page 11: Design Pattern JEE

•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é?

Page 12: Design Pattern JEE

• Le Pattern Service Locator Ou comment éviter de dupliquer le code du « lookup »

Page 13: Design Pattern JEE

• MVC avec Model « remote » Deuxième jet

Où est le problème ?

Ca c’est 1000 fois plus lent qu’un appel local !!

Page 14: Design Pattern JEE

• Le pattern DTO (Data Transfert Object) Ou à quoi sert la sérialisation…

try {

TransfertObject o = serviceStub.serviceMethod(param);

} catch (RemoteException e) {

throw new ApplicativeException();

}

Page 15: Design Pattern JEE
Page 16: Design Pattern JEE

• 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é