Stateful is Beautiful   Retour aux sources de Java EE
<ego>A propos de... </ego>Antoine Sabot-DurandExpert Java EE16 ans d’expérienceLeader sur Seam SocialMembre de l’EG CDI 1....
<pub>A propos de...</pub>Ippon TechnologiesJava EEPortailSOARIAe-commerceMobilité
De quoi sera-t’il question ?               Stateless / Stateful & cie               EJB               CDI               JP...
Stateless et Statefulsont sur un bateau
De quoi parle-t’on ?  La stack Java EE dispose de 3 approches  possibles :StateLess          Stateful Dry       StateFul
StateLessAucun état côté serveurTout est stocké côtéclientLe client gère la mise àjourLa même requêtedonnera toujours lemê...
Stateful Dry       L’état est stocké côté       serveur       Il est «déshydraté» via       une solution de cache ou      ...
StatefulLe serveur stocke l’étatde session utilisateurCet état est accessibleen mémoireLe client se contente detransmettre...
Stateful dry vs Stateless ?Sont souvent confondusL’appli full Stateless necréé pas d’état mémoiretemporaireLe full Statele...
Statefuldry vs Stateful                                                         data                                      ...
Pourquoi le Stateful est-il mal aimé ?
Les légendes urbainesLe Stateful               Lourd et Compliqué  c’est...               Non scalable               Contr...
Historique Java EE                                                                                                        ...
La réalitéPlus de la moitié des développements Javautilisent SpringSpring supporte le Stateful à contre coeur etde manière...
Spring, le Marteau Doré« Un outil ou framework, pour lequel uneéquipe a acquis un niveau de compétence telqu’il sera systé...
Le stateful avec Java EE
Les Acteurs du StatefulLes scopes servlet et JSFCDI et ses scopesEJB 3.X et son @statefulJPA et le persistencecontext
Scopes servlet et JSFScope ApplicationLa sessionLe Scope view : qui permet de stocker del’information le temps d’une vueLe...
CDI 1/2Solution d’injection de dépendance couplage faible fortement typéePatterns mis en oeuvre Interceptor Decorator Obse...
CDI 2/2 Les idées reçuesCDI 1.0 n’est pas exploitable car trop jeune  Héritage de Seam & GuiceNécessite de travailler avec...
LES EJB 1/2Transactionnels et distribuablesExistent en plusieurs parfum : Stateless StatefulGèrent la planification, le JMS...
LES EJB 2/2 idées reçuesLourd et compliqués       @Stateful                          public class MonEjb {Pas testables   ...
Le Persistence contextEn provenance de JPAGère l’interaction avec la BDDLe Mapping avec les entitésLe cache de niveau 1 : ...
Ces outils sont vos amisPolyvalentsFacile à prendre en maiSavent cohabiter avecvotre marteau doréPermettent de créer desar...
Pourquoi le Stateful est      beautiful ?
Pourquoi a-t’on oublié...La sérialisation des services ? Parce que les bean spring ne sont pas facilement serialisables (p...
Mais il n’est pas trop tardLes EJB et les bean CDI sont vraimentserialisablesDu coup la passivation est utilisable Pour le...
Le Stateful peut être restfulEtre stateful n’empêche pas la résilience : Possibilité de récréer une session à partir d’une...
Architectures possibles 1/3
Architectures possibles 1/2Pour ceux qui aiment lescouchesIl est toujours possiblede faire çaOn peut même enmettre plus qu...
Architectures possibles 3/3Une architecturebeaucoup plus ramasséeMise en oeuvre dupattern GatewayPermet undéveloppement ra...
Conclusion :   Les outils du Statefulpermettent de faire aussi duStateless (sans être tordus).
Stateful is beautiful
Prochain SlideShare
Chargement dans…5
×

Stateful is beautiful

1 568 vues

Publié le

Retour aux sources de Java EE : Stratégies de stockage des états dans une application Java EE, scope session de l'Api Servlet, CDI, EJB 3.X, sérialisation, passivation et résilience, scalabilité et design patterns...

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 568
Sur SlideShare
0
Issues des intégrations
0
Intégrations
7
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Stateful is beautiful

  1. 1. Stateful is Beautiful Retour aux sources de Java EE
  2. 2. <ego>A propos de... </ego>Antoine Sabot-DurandExpert Java EE16 ans d’expérienceLeader sur Seam SocialMembre de l’EG CDI 1.1Twitter : @antoine_sdHastag : #StatefulIsBeautiful
  3. 3. <pub>A propos de...</pub>Ippon TechnologiesJava EEPortailSOARIAe-commerceMobilité
  4. 4. De quoi sera-t’il question ? Stateless / Stateful & cie EJB CDI JPA Pattern Stateful des trolls sur Spring
  5. 5. Stateless et Statefulsont sur un bateau
  6. 6. De quoi parle-t’on ? La stack Java EE dispose de 3 approches possibles :StateLess Stateful Dry StateFul
  7. 7. StateLessAucun état côté serveurTout est stocké côtéclientLe client gère la mise àjourLa même requêtedonnera toujours lemême résultat
  8. 8. Stateful Dry L’état est stocké côté serveur Il est «déshydraté» via une solution de cache ou dans une BDD Puis réhydraté à chaque requête pour récréer le contexte utilisateur A la fin de la requête l’état en mémoire est détruit
  9. 9. StatefulLe serveur stocke l’étatde session utilisateurCet état est accessibleen mémoireLe client se contente detransmettre un id
  10. 10. Stateful dry vs Stateless ?Sont souvent confondusL’appli full Stateless necréé pas d’état mémoiretemporaireLe full Stateless est doncplus rare qu’on ne lepense
  11. 11. Statefuldry vs Stateful data Scope HTTP Requete ContexteContainer EJB/CDI Scope HTTP SessionSession
  12. 12. Pourquoi le Stateful est-il mal aimé ?
  13. 13. Les légendes urbainesLe Stateful Lourd et Compliqué c’est... Non scalable Contre nature car http est stateless Ringard Cancérigène
  14. 14. Historique Java EE Spring 2.5.1 supporte les EJB3 11/01/2008 Spring 1.0 24/03/2004 Spring arrive sur Sourceforge Spring 2.0 Spring 2.5 Spring 3.0 20/02/2003 03/10/2006 supporte les 19/12/2009 annotations 17/11/2007Java Professional J2EE 1.2 J2EE 1.3 J2EE 1.4 Java SE 5.0 Java EE 5 Java EE 6 Edition 12/12/1999 24/09/2001 11/11/2003 30/09/2004 11/05/2006 10/12/2009 Mai 1999 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011
  15. 15. La réalitéPlus de la moitié des développements Javautilisent SpringSpring supporte le Stateful à contre coeur etde manière très partielleLes problèmes de scalabilité du stateful sontsolutionnables mais pas avec SpringDonc près de 3/4 des developpeurs Javajugent le stateful à travers un outil inadaptéau stateful
  16. 16. Spring, le Marteau Doré« Un outil ou framework, pour lequel uneéquipe a acquis un niveau de compétence telqu’il sera systématiquement mis en oeuvrepour toute nouvelle problématique quelquesoit son niveau d’adéquation aux besoinsréels »« Quand on détient un marteau doré, tous lesproblèmes ressemblent à un clou »
  17. 17. Le stateful avec Java EE
  18. 18. Les Acteurs du StatefulLes scopes servlet et JSFCDI et ses scopesEJB 3.X et son @statefulJPA et le persistencecontext
  19. 19. Scopes servlet et JSFScope ApplicationLa sessionLe Scope view : qui permet de stocker del’information le temps d’une vueLe Scope Flash : qui survit d’une requête àl’autreLe scope requête : le scope du Stateful Dry
  20. 20. CDI 1/2Solution d’injection de dépendance couplage faible fortement typéePatterns mis en oeuvre Interceptor Decorator ObserverScope conversation : je contrôle enfin le cyclede vie de mon scope
  21. 21. CDI 2/2 Les idées reçuesCDI 1.0 n’est pas exploitable car trop jeune Héritage de Seam & GuiceNécessite de travailler avec les EJB Les deux se marient bien mais rien n’est obligéNe fonctionne qu’avec Java EE 6 Tourne sur Tomcat 6Ne fonctionne qu’avec JSF Extension pour JSF, Servlet, Gwt, Wicket Tourne aussi sur Java SE en standalonePas d’interoperrabilité avec Spring Extension CDI-Spring bridge dans les deux sens
  22. 22. LES EJB 1/2Transactionnels et distribuablesExistent en plusieurs parfum : Stateless StatefulGèrent la planification, le JMSDisposent d’un conteneur spécifique géré par leserveur Permettant de partager naturellement des services entre plusieurs applicationsPar défaut sont des Bean CDI
  23. 23. LES EJB 2/2 idées reçuesLourd et compliqués @Stateful public class MonEjb {Pas testables public void MaMethode(){Ne font que du stateful } ...Utilisable que dans des }développements Web
  24. 24. Le Persistence contextEn provenance de JPAGère l’interaction avec la BDDLe Mapping avec les entitésLe cache de niveau 1 : l’entity manager cacheles entités qu’il manageLe cache de niveau 2 : JPA cache sesinteractions avec la BDDVaut mieux qu’un DAO Stateless
  25. 25. Ces outils sont vos amisPolyvalentsFacile à prendre en maiSavent cohabiter avecvotre marteau doréPermettent de créer desarchitectures nouvellesArrêtez de tordreSpring quand Java EE estplus adapté
  26. 26. Pourquoi le Stateful est beautiful ?
  27. 27. Pourquoi a-t’on oublié...La sérialisation des services ? Parce que les bean spring ne sont pas facilement serialisables (problèmes avec les proxys d’injection) Parce qu’elle n’est utile que dans le cadre d’une architecture StatefulLa Passivation des services ? Parce qu’elle ne fonctionne que si la serialisation est possible Parce que le conteneur Spring ne lintègre pas dans son cycle de vie
  28. 28. Mais il n’est pas trop tardLes EJB et les bean CDI sont vraimentserialisablesDu coup la passivation est utilisable Pour les EJB c’est monnaie courant et facile à gérer avec @PrePassivate et @PostActivateEt peut servir à tranformer le StateFul enStateDry automatiquement : la sérialization devient un stockage lent pour les beans non sollicités depuis un temps donné
  29. 29. Le Stateful peut être restfulEtre stateful n’empêche pas la résilience : Possibilité de récréer une session à partir d’une information envoyée par le client.Ainsi tout une partie de l’application peutrester restful et une autre peut n’être questateful : Catalogue, puis tunnel de vente.
  30. 30. Architectures possibles 1/3
  31. 31. Architectures possibles 1/2Pour ceux qui aiment lescouchesIl est toujours possiblede faire çaOn peut même enmettre plus qu’avecSpring
  32. 32. Architectures possibles 3/3Une architecturebeaucoup plus ramasséeMise en oeuvre dupattern GatewayPermet undéveloppement rapide
  33. 33. Conclusion : Les outils du Statefulpermettent de faire aussi duStateless (sans être tordus).

×