SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
Design Pattern Java EE – L’essentiel
By Yannick
• Sommaire
Tour d’horizon de ce que l’on va aborder…
Intro

Design Pattern dans l’archi JEE
Une vue d’ensemble des design de Sun

DP

Les design pattern

Quizz

Petit test à chaud !!

MVC
Business Delegate
Service Locator

Ou comment voir si on a suivi ^^

Transfert Object
Intercepting Filter
Front Controller
•Achitecture n-tiers
•MVC

POJO

Model

La base…
Requête d’état

• Représente les données de l'appli
• Répond aux requêtes de la vue
• Notifie la vue des changements

Changement
d’état

Notifications de changement

Servlet

Controller

JSP

View
• Représentation du modèle
• Interface avec laquelle l'utilisateur
interagit
• Reçoit les actions de l'utilisateur

Choix de la vue

Actions utilisateurs

• 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é
•MVC, dans une appli web « Réelle »
Ou comment gérer le code dupliqué…
Détail compte

Identification

Controller
Controller
Controller
Controller
Model
Model
Model
Model

…
…
JSP
JSP
JSP
JSP

•
•
•
•
•

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
•Front controller

Classes de
validation

In the real life ^^
Action
Servlet

FormBean

Front
Controller

Classes d’
actions

Request
Config
XML

Strutsconfig.xml

<xml>
<validate>
</validate>
<mapping>
</mapping>
</xml>

Action
Object

JSP

Model
•MVC
Quand on est que sur une VM

Oui mais voilà,
et quand le
modèle

n’est pas

sur le
même serveur ???
• Les outils du « remote »
Ou les outils pour comprendre les pattern « remote »
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

RMI
•

Remote Method Invocation

•

Le but est de récupérer un objet au
travers du réseau
• MVC avec Model « remote »
Un premier jet

Oui mais voilà,
des fois on est
« remote »
Et des fois pas

•Le pattern Business Delegate

Et cette fois
Ou comment cacher la complexité du JNDI et RMI
il est où
le code dupliqué?

• Réduit le couplage entre les couches présentation et Business
• Encapsule la recherche dans l’annuaire
• Proxy pour le client
• 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é

Más contenido relacionado

Destacado

Hanoi jug java 8 stream api
Hanoi jug   java 8 stream apiHanoi jug   java 8 stream api
Hanoi jug java 8 stream apiVu Dang Ngoc
 
Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1Laurent Guérin
 
Why postgres SQL deserve noSQL fan respect - Devoxx Fr 2015
Why postgres SQL deserve noSQL fan respect - Devoxx Fr 2015Why postgres SQL deserve noSQL fan respect - Devoxx Fr 2015
Why postgres SQL deserve noSQL fan respect - Devoxx Fr 2015Quentin Adam
 
Build your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and GrailsBuild your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and GrailsPeople10 Technosoft Private Limited
 
Devoxx France - Web Components, Polymer et Material Design
Devoxx France -  Web Components, Polymer et Material DesignDevoxx France -  Web Components, Polymer et Material Design
Devoxx France - Web Components, Polymer et Material DesignHoracio Gonzalez
 
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2Romain Linsolas
 
Holo to material design - Devoxx France 2015
Holo to material design - Devoxx France 2015Holo to material design - Devoxx France 2015
Holo to material design - Devoxx France 2015Quentin Sallat
 
Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Alexis Seigneurin
 
Introduction to Hadoop - FinistJug
Introduction to Hadoop - FinistJugIntroduction to Hadoop - FinistJug
Introduction to Hadoop - FinistJugDavid Morin
 
Pocket et IFTTT comme agrégateur de flux. Retour d'expérience de Silver Mercier
Pocket et IFTTT comme agrégateur de flux. Retour d'expérience de Silver MercierPocket et IFTTT comme agrégateur de flux. Retour d'expérience de Silver Mercier
Pocket et IFTTT comme agrégateur de flux. Retour d'expérience de Silver MercierBéatrice Foenix-Riou
 
The end of server management : hosting have to become a commodity - Keynote D...
The end of server management : hosting have to become a commodity - Keynote D...The end of server management : hosting have to become a commodity - Keynote D...
The end of server management : hosting have to become a commodity - Keynote D...Quentin Adam
 
Présentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTPrésentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTDNG Consulting
 
Google datastore & search api
Google datastore & search apiGoogle datastore & search api
Google datastore & search apiGeoffrey Garnotel
 
Le Lean Startup depuis les tranchées
Le Lean Startup depuis les tranchéesLe Lean Startup depuis les tranchées
Le Lean Startup depuis les tranchéesNicolas Deverge
 
Introduction to Reactive Streams and Reactor 2.5
Introduction to Reactive Streams and Reactor 2.5Introduction to Reactive Streams and Reactor 2.5
Introduction to Reactive Streams and Reactor 2.5Stéphane Maldini
 
Vis ma vie de développeuse
Vis ma vie de développeuseVis ma vie de développeuse
Vis ma vie de développeuseduchess-lyon
 

Destacado (20)

Hanoi jug java 8 stream api
Hanoi jug   java 8 stream apiHanoi jug   java 8 stream api
Hanoi jug java 8 stream api
 
Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1
 
Why postgres SQL deserve noSQL fan respect - Devoxx Fr 2015
Why postgres SQL deserve noSQL fan respect - Devoxx Fr 2015Why postgres SQL deserve noSQL fan respect - Devoxx Fr 2015
Why postgres SQL deserve noSQL fan respect - Devoxx Fr 2015
 
Build your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and GrailsBuild your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and Grails
 
Devoxx France - Web Components, Polymer et Material Design
Devoxx France -  Web Components, Polymer et Material DesignDevoxx France -  Web Components, Polymer et Material Design
Devoxx France - Web Components, Polymer et Material Design
 
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
Devoxx France 2015 - Se préparer à l'arrivée d'Angular 2
 
Holo to material design - Devoxx France 2015
Holo to material design - Devoxx France 2015Holo to material design - Devoxx France 2015
Holo to material design - Devoxx France 2015
 
Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)
 
Introduction to Hadoop - FinistJug
Introduction to Hadoop - FinistJugIntroduction to Hadoop - FinistJug
Introduction to Hadoop - FinistJug
 
Pocket et IFTTT comme agrégateur de flux. Retour d'expérience de Silver Mercier
Pocket et IFTTT comme agrégateur de flux. Retour d'expérience de Silver MercierPocket et IFTTT comme agrégateur de flux. Retour d'expérience de Silver Mercier
Pocket et IFTTT comme agrégateur de flux. Retour d'expérience de Silver Mercier
 
Git flow in action
Git flow in actionGit flow in action
Git flow in action
 
The end of server management : hosting have to become a commodity - Keynote D...
The end of server management : hosting have to become a commodity - Keynote D...The end of server management : hosting have to become a commodity - Keynote D...
The end of server management : hosting have to become a commodity - Keynote D...
 
Présentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTPrésentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWT
 
Introduction to Grails
Introduction to GrailsIntroduction to Grails
Introduction to Grails
 
Google datastore & search api
Google datastore & search apiGoogle datastore & search api
Google datastore & search api
 
Le Lean Startup depuis les tranchées
Le Lean Startup depuis les tranchéesLe Lean Startup depuis les tranchées
Le Lean Startup depuis les tranchées
 
Fluent15
Fluent15Fluent15
Fluent15
 
Riak introduction
Riak introductionRiak introduction
Riak introduction
 
Introduction to Reactive Streams and Reactor 2.5
Introduction to Reactive Streams and Reactor 2.5Introduction to Reactive Streams and Reactor 2.5
Introduction to Reactive Streams and Reactor 2.5
 
Vis ma vie de développeuse
Vis ma vie de développeuseVis ma vie de développeuse
Vis ma vie de développeuse
 

Similar a Design Pattern JEE

Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1ATHMAN HAJ-HAMOU
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Microsoft Technet France
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 
ToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéNicolas Deverge
 
Cellenza microservices - tour d'horizon - v0.1
Cellenza   microservices - tour d'horizon - v0.1Cellenza   microservices - tour d'horizon - v0.1
Cellenza microservices - tour d'horizon - v0.1Radoine Douhou
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flexdavid deraedt
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flexdavid deraedt
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystémeAlgeria JUG
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveDesign applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveRomainKuzniak
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2RomainKuzniak
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFBoubker ABERWAG
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 

Similar a Design Pattern JEE (20)

Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
 
Rails 3 au Djangocong
Rails 3 au DjangocongRails 3 au Djangocong
Rails 3 au Djangocong
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
ToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & Agilité
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
Cellenza microservices - tour d'horizon - v0.1
Cellenza   microservices - tour d'horizon - v0.1Cellenza   microservices - tour d'horizon - v0.1
Cellenza microservices - tour d'horizon - v0.1
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Single Page Application
Single Page ApplicationSingle Page Application
Single Page Application
 
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveDesign applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 
Mongo db with C#
Mongo db with C#Mongo db with C#
Mongo db with C#
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 

Design Pattern JEE

  • 1. Design Pattern Java EE – L’essentiel By Yannick
  • 2. • Sommaire Tour d’horizon de ce que l’on va aborder… Intro Design Pattern dans l’archi JEE Une vue d’ensemble des design de Sun DP Les design pattern Quizz Petit test à chaud !! MVC Business Delegate Service Locator Ou comment voir si on a suivi ^^ Transfert Object Intercepting Filter Front Controller
  • 4.
  • 5. •MVC POJO Model La base… Requête d’état • Représente les données de l'appli • Répond aux requêtes de la vue • Notifie la vue des changements Changement d’état Notifications de changement Servlet Controller JSP View • Représentation du modèle • Interface avec laquelle l'utilisateur interagit • Reçoit les actions de l'utilisateur Choix de la vue Actions utilisateurs • 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é
  • 6. •MVC, dans une appli web « Réelle » Ou comment gérer le code dupliqué… Détail compte Identification Controller Controller Controller Controller Model Model Model Model … … JSP JSP JSP JSP • • • • • 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
  • 7. •Front controller Classes de validation In the real life ^^ Action Servlet FormBean Front Controller Classes d’ actions Request Config XML Strutsconfig.xml <xml> <validate> </validate> <mapping> </mapping> </xml> Action Object JSP Model
  • 8. •MVC Quand on est que sur une VM Oui mais voilà, et quand le modèle n’est pas sur le même serveur ???
  • 9. • Les outils du « remote » Ou les outils pour comprendre les pattern « remote » 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 RMI • Remote Method Invocation • Le but est de récupérer un objet au travers du réseau
  • 10. • MVC avec Model « remote » Un premier jet Oui mais voilà, des fois on est « remote » Et des fois pas 
  • 11. •Le pattern Business Delegate Et cette fois Ou comment cacher la complexité du JNDI et RMI il est où le code dupliqué? • Réduit le couplage entre les couches présentation et Business • Encapsule la recherche dans l’annuaire • Proxy pour le client
  • 12. • Le Pattern Service Locator Ou comment éviter de dupliquer le code du « lookup »
  • 13. • MVC avec Model « remote » Deuxième jet Où est le problème ? Ca c’est 1000 fois plus lent qu’un appel local !!
  • 14. • Le pattern DTO (Data Transfert Object) Ou à quoi sert la sérialisation… try { TransfertObject o = serviceStub.serviceMethod(param); } catch (RemoteException e) { throw new ApplicativeException(); }
  • 15.
  • 16. • 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é