formation spring objis [enregistrement automatique]

Upload: abdelhaq-moufaddel

Post on 31-Oct-2015

126 views

Category:

Documents


3 download

TRANSCRIPT

  • Formation Springwww.objis.com - Formation SPRING*

  • www.objis.com - Formation SPRINGA propos dObjisCentre de formation depuis 2005 Spcialiste technologies Java/J2ee Formations intra/inter entreprises 70% de pratique Paris Lyon Dakar www.objis.com

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAtouts ObjisAudit technique de vos besoins 70% de travaux pratiques Cl USB avec outils et corrigs TP Bilan pdagogique individuel Ingnierie de financement Veille technologique

    *www.objis.com - Formation SPRING

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGVeille technologique*www.objis.com - Formation SPRING(cliquez sur les images)

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSOMMAIRE (5j) Historique, dfinition et architecture Concept cl N1 : injection de dpendances Concept cl N2 : Programmation Oriente Aspect Accs aux donnes JDBC Intgration Spring / Hibernate Gestion des transactions Intgration Spring / Struts Dveloppement web avec Spring MVC Gestion de la scurit Intgration Spring / JMS Stratgies de test avec Spring Conclusion ressources Rappels J2EEwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 1 : Introduction SpringHistorique Dfinition Architecturewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSPRING : HistoriqueRod Johnson (2002) Faire avec un simple bean (POJO) ce qui tait seulement possible avec EJBs Environnement J2SE et J2EE Simplicit Testabilit Couplage faible. Programmation par interfaces*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGMission du Framework SpringNous pensons que: J2EE devrait tre plus facile utiliserIl est prfrable de programmer travers des interfaces plutt qu travers des classes. La conception OO est plus importante quune toute technologie dimplmentation, comme J2EE.Trop dexceptions grer en Java ! Et si un framework nous permettait de mieux grer les exceptions ?Les tests sont essentiels. Et si un framework nous permettait de tester facilement notre application. Nous souhaitons que: Spring soit un plaisir utiliserVotre code applicatif ne dpende pas des APIs Spring.Spring nentre pas en comptition avec de bonnes solutions existantes, mais facilite lintgration avec ces solutions.. (Par example, Hibernate est un bon outil de mapping O/R. Pourquoi en crer un autre ?.)

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSPRING : dfinitionFramework et conteneur lger, injection de dpendance et orient aspect.framework : permet configuration et cration d'applications complexes partir de composants rutilisablesconteneur : Spring contient et manage cycle de vie des composants susceptibles d'tre injectslger : taille (2,8Mb) + surcharge JVM + non intrusif injection de dpendance : Spring vous injecte les composants dont vous avez besoin = JNDI Reverse.orient aspect : permet sparation logique mtier et services techniques transversaux (Logs, Scurit. Transaction..)www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConteneurs SpringPlusieurs implmentations de Conteneurs hritant de 2 interfaces principales BeanFactory (org.springframework.beans.factory.BeanFactory)Ex : XMLBeanFactory : dfinition beans dans XMLConvient si pb de ressources (Ex :tel portable) ApplicationContext (org.springframework.context.ApplicationContext)Extension de BeanFactoryEx : ClassPathApplicationContext,FileSystemXMLApplicationContext Messages, I18n, publication d'vnements des listeners

    *

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSPRING : architecture modulaire Jusqu'o votre appli. sera oriente SPRING ?www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSPRING : Modules clsCore : fonctions essentielles. Utilise fabrique de bean (conteneur) org.springframework.beans.factory.BeanFactory. Support de l'injection. Application Context : ce qui permet de faire de Spring un Framework : support internationalisation (i18n), cycle de vie, validations + services entreprises : acces JNDI, integration EJB, scheduling + intgration velocity/Freemarker AOP : Gre la sparation procupations transversales techniques. Possibilit crez vos propres aspects. Intgration avec AspectJ et bass sur interfaces de l'AOP Alliance DAO / JDBC : accs aux donnes (gestion exceptions). ORM : intgration framework ORM (hibernate, iBatis, JPA, JDO). Rq : avec DAO, permet de donner DAO plusieurs frameworks ORM.*www.objis.com - Formation SPRING

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING*SPRING : Modules clsJMX : possibilit d'exposer vos beans comme composants JMX (Java Management Extension). Monitoring des beans. JCA : connecteur JEE. Intgration Spring avec mainframes, et autres systme d'information (ERP,CRM, MOM...) Spring MVC : Crer applications web Model-Vue-Controlleur avec Spring. Portlets : Une page web = plusieurs portlets Remoting : Accder aux beans travers le rseau. Intgration RMI, JAX-RPC, JAX-WS. JMS : Intgration Java Messages Serviceswww.objis.com - Formation SPRING

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSPRING : architecture modulaire Exemple modules pour appli Struts/Hibernatewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 2 : Injection de dpendancesInversion de controle (IoC) et Injection de dp. Sans injection : couplage fort entre objets Avec injection : couplage faible www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGInversion de Contrle (IoC)IoC = Votre code partage avec un framework le flot d'xcution d'un programme. Exemple avec les listeners de SWING IoC diffrent de Injection de dpendances...www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSans injectionPour travailler avec un objet, nous le crons (en dur) avec les techniques suivantes New() JNDI Lookup Cela cre un couplage (statique) fort entre l'objet demandeur et l'objet apell.www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple de couplage fortwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGProblmes couplage fortPas de 'Saxophone' sans 'Musicien' Difficile de tester la Classe Musicien Difficile de rutiliser la Classe Musicienwww.objis.com - Formation SPRING*solutions1) Masquer l'implmentation avec Interfaces !

    2) Injection de code l'excution.

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAvec injectionPour travailler avec un objet possdant un savoir-faire, nous dclarons une interface que l'objet doit implmenter. Spring injecte dynamiquement un objet implmentant cette interface. L'objet est dclar dans un fichier xml de configuration, par dfaut applicationContext.xml Cela cre un couplage faible entre l'objet demandeur et l'objet apell. Ils n'ont pas besoin de se connatre mutuellement.www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple de couplage faiblewww.objis.com - Formation SPRING*Ici les classes sont

    indpendantes.

    Couplage faible

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGDclaration Musicien et Saxophonewww.objis.com - Formation SPRING*Fichier de configuration de Spring : applicationContext.xmlREFERENCE : http://static.springframework.org/spring/docs/2.5.x/reference/beans.html

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGLancement de l'Applicationwww.objis.com - Formation SPRING*joue Vive le vent... : TOOT TOOT TOOT 1)Chargement conteneur 3) Utilisation bean 2)Rcupration bean

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGModification paramtrage...www.objis.com - Formation SPRING*Le musicien change d'instrument...

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGLancement de l'Applicationwww.objis.com - Formation SPRING*joue Vive le vent... : PLINK PLINK PLINK 1)Chargement conteneur 3) Utilisation bean 2)Rcupration bean

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 3 : POALimites de la programmation Objet (POO) Atouts de la programation Aspect (POA) Exemple de mise en oeuvre POA Spring Intgration avec @AspectJ

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConstats et limites de la POOPhnomne de dispersion : dans le code d'une classe mtier, on retrouve souvent du code 'technique' : log, scurit, transaction... Ce code technique correspondant des 'procupations transversalles' des diffrentes couches de l'application. Maintenance du code et Rutilisabilit des composants diminus.

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple : appli. gestion d'colewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGValeur ajoute POALa programmation Oriente Aspect (POA) permet de sparer le code mtier et le code technique correspondant aux procupations transversales. Un aspect = une procupation transversale. Le tisseur d'aspect de Spring (Spring AOP) intercepte les mthodes mtier et applique les aspects associs cette mthode. D'autres tisseurs d'aspects (AspectJ, JbossAOP) interceptent le changement d'tat d'une variable , ainsi qu'un constructeur

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGProgrammation Oriente Aspectwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple : appli. gestion d'colewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple d'aspect : SpectateursNous souhaitons que les spectateurs prennent place systmatiquement avant qu'un musicien joue. Nous souhaitons que les spectateurs applaudissent systmatiquement aprs que le musicien joue. Nous pourrons galement demander d'tteindre les Tl portables avant la prestation, ou encore de demander remboursement si prestation de mauvaise qualit...

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple d'aspect : Spectateurwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGMise en oeuvre aspectwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGPas d'impact sur code Applicatif !www.objis.com - Formation SPRING*joue Vive le vent... : Les spectateurs prennent placeTOOT TOOT TOOTLes spectateurs applaudissement :BRAVO ! 1)Chargement conteneur 3) Utilisation bean 2)Rcupration bean

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGVocabulaire POAAspect = service = procupation transversale Point de jonction (JoinPoint), Coupe (Pointcut) Greffon (Advice) Cible (Target) = objet sur lequel appliquer aspect Tissage = Application d'un aspect une cible

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGGreffon (advice)Greffon = un programme qui sera activ un certain point d'excution du systme, prcis par un point de jonction. Exemple : mthode 'applaudit' de l'aspect Spectateurswww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGTypes de greffon (advice)Before : excution avant le point de jonction After : excution aprs le point de jonction After-returning : xcution aprs...si succs After-throwing : xcution aprs...si chec Around : xcution autour du point de jonction www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGPoint de jonction (Joinpoint)Point de jonction = Endroit spcifique dans le flot d'excution du systme, o il est valide d'insrer un greffon. Il n'est pas possible d'insrer un greffon au milieu du code d'une fonction. Par contre on pourra le faire avant, autour de, la place ou aprs l'appel de la fonction.Exemple : Le public applaudit APRES que chaque instrument soit jou www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGCoupe (PointCut)Coupe = ensemble de points de jonction Exprim avec notation AspectJ. Attribut 'expression' de la balise La coupe spcifie qu'un greffon d'oit tre appliqu toute mthode 'jouer', quelque soit son package (*), quelque soit le nombre d'arguments (..), quelque soit le type de retour.. www.objis.com - Formation SPRING*

    Quelque soit classe/packageQuelque soit le type de retour de la mthodeQuelque soit paramtres

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGTissage et cycle de vie applicatifTissage = Application d'un aspect une cible 3 types de tissages Tissage la compilation (AspectJ). Ncessite compilateur spcial. Tissage au chargement de l'application (AspectJ). Ncessite un ClassLoader spcial. Tissage l'excution (Typique Spring POA). Ici le conteneur gnre dynamiquement Proxy qui intercepte les appels et met en oeuvre l'aspect. www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGLien utiles Tisseurs d'aspectsAspectJ : http://eclipse.org/aspectj Jboss AOP : http://labs.jboss.com/portal/jbossaop/index.html Spring AOP : http://www.springframework.org www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGIntgration d'aspect via @Aspectwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGIntgration d'aspect via @Aspectwww.objis.com - Formation SPRING*Les spectateurs prennent placeLes spectateurs teignent tl. portablesjoue Vive le vent... : TOOT TOOT TOOTLes spectateurs applaudissement : BRAVO !

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAspects AspectJ dans spring Le runtime AspectJ cr des aspects aspectJ (ex : JugeAspect.aj) Le conteneur Spring peut manager les aspects aspectJ, mme s'il ne les a pas cr ( attribut 'factory-method' de la balise ). L'aspect aspectJ peut avoir besoin de beans grs par le conteneur Spring. (ex : JugeAspect fait une critique via un MoteurDeCritique) www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 4 : accs aux donnesPhilosophie d'accs aux donnes La gamme d'exceptions Accs aux datasources Framework JDBC de Spring

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGPhilosophie d'accs aux donnesUtilisation interface DAO. Le dveloppeur a plusieurs choix d'implmentations de technologies de persistance (JDBC,Hibernate,JPA...) Seules les mthodes d'accs sont exposes via l'interface. L'application est plus modulaire. Les services sont facilement testables car non coupls une implmentation donne. On peut crer des implmentations 'factices' facilitant tests unitaires et sans accs rel la base, donc + rapide et avec moins de risque d'chec du la base de donnes.

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGGestion Exceptions Comment grer exceptions d'accs donnes ? SQLException (Jdbc) trop gnrique ! Exceptions Hibernate nombreuses et plus dtailles mais propres Hibernate ! Donne indication sur framework de persistance utilis... Rponse de Spring : DataAccessException une gamme d'exceptions dtailles et indpendantes de votre stratgie de persistence. Spring se charge de lever la bonne exception quelque soit le framework de persistance utilis.www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING Exceptions sans / avec SPRINGwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGStratgie Template / CallbackSpring distingue tapes obligatoires d'accs aux donnes (Template, Ex : connection DB) et tapes facultatives (Callback, Ex : contexte transactionnel)Template = Bean , Callback = Bean Inconvnient : vous devez crer le Callback.

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGTemplates disponibles *

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGInjection jdbcTemplate dans DAO www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGInjection jdbcTemplate dans DAO www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGStratgie DAO SupportChaque template fournit mthodes permettant l'acces aux donnes sans avoir crer explicitement un Callback DAO Support = surcouche de Template Vous pouvez crer votre DAO comme hritant de DAO Support

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGStratgie DAO SupportExemple : si votre DAO hrite de JdbcDaoSupport, vous pourrez obtenir un template JdbcTemplate travers la mthode : getJdbcTemplate(); Vous pourrez galement accder directement aux objets de votre framework de persistence. Exemple : JdbcDaoSupport fournit la mthode getConnection() pour rcuprer l'objet Connection de Jdbc. www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple DAO Supportwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple DAO Supportwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING* Configuration DataSource3 options : Source de donnes dfinies par driver JDBC Source de donnes identifie par nom JNDI Source de donnes avec pool de connexion Conseil : utiliser accs DataSource JNDI avec pooling de connexion JNDI : infos de connection DB externes l'appli Pool de connexion : meilleures performances JndiObjectFactoryBean : retrouver un objet d'un annuaire JNDI et le transformer en bean Spring www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING*JNDI DataSource Attribut 'resourceref' utile uniquement en environnement J2EE Si value='true' , alors le nom JNDI sera prfix de java:comp/env Ex : ici, le nom JNDI est java:comp/env/jdbc/RantzDataSource Nom JNDI

    de la base de donnes Fabrique de bean

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING* Namespace jee avec spring 2.0 - Elment permet aussi de retrouver objet via annuaire JNDI

    - Dclaration suivante strictement identique dclaration page prcdente*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGPool de connexionSpring ne fournit pas de pool de connexion Conseil : utiliser Apache DBCP http://jakarta.apache.org/commons/dbcp DBCP fournit plusieurs DataSources, le plus simple configurer tant BasicDataSource www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGDataSources avec Driver JDBCorg.springframework.jdbc.datasource.DriverManagerDataSource : retourne nouvelle connection chaque appel org.springframework.jdbc.datasource.SingleConnectionDataSource retourne mme connection chaque appel. Leurs configuration est identique qu'avec DataSource DBCP sauf qu'il n'y a pas de paramtres de config li au pool Ces dataSources sont viter en production ! Prfrer dataSource avec pool de connexion (Ex : BasicDataSource DBCP)www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGBonne pratique configuration DataSource www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 5 : Intgration Spring / HibernateAtouts d'hibernate et de Spring HibernateDaoTemplate HibernateDaoSupport Code non intrusif

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGIntgration Spring / HibernateSolution 1 : Crez votre DAO en injectant un template HibernateTemplate fourni par Spring. Solution 2 : Crez votre DAO comme hritant de HibernateDaoSupport , superClasse fournie par Spring Solution 3 : Crez un DAO non intrusif par injection d'une SessionFactory

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGDAO par injection HibernateTemplatewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGDAO par hritage de HibernateDaoSupportwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGDA0 'non intrusif'www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGDclaration du DAOwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAnnotation @Repository (pour DAO) Permet de se dispenser de configuration DAO dans XML Avantage : translation d'exceptions Necessite configuration complmentaire Autowiring byName Hrite de @Component Equivalence JSR 250 : @Resourcewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGA tudier : PetClinicFournie avec SPRING 2.5, Petclinic est une version de l'application petstore avec Spring, et plusieurs solutions de mapping O/R. Bonnes pratiques integration Spring Jdbc, Hibernate, JPAwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 6 : TransactionsConcept de transaction Gestionaires de transaction SPRING Les 5 proprits d'une transaction Transaction programmative Transaction dclarative

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConcept de transactionEnsemble d'opration qui russissent tous (commit) ou chouent toutes (Rollback) Exemple : retrait d'argent dans distributeur. 1) les billets sortent2) compte dbit Proprits ACID (Atomique, Cohrente, Isole, Durable) Transactions importantes dans applications entreprises ! Transaction avec 1 base / Transactions distribueswww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGGestionnaires de TransactionsAvec Spring,comme avec serveur d'application J2EE (Conteneur EJB), il est possible de grer les transactions de faon programmative ou dclarative Spring propose diffrents gestionnaires de transactions (TransactionManagers) adapts diffrentes cibles

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConfiguration TransactionManager

    JDBC -

    Hibernate -

    Lien : http://static.springframework.org/spring/docs/2.5.x/reference/transaction.html

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGLes 5 proprits d'une transactionwww.objis.com - Formation SPRING*Optimisation si requte lecture en base de donnes Bonne pratique : read-only = true pour mthodeq 'get'Quelles Exceptions (Mtier/Runtime) lancent un Rollback ?

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING Propagation de transactionPROPAGATION_SUPPORTS : la mthoe courante n'a pas besoin d're excute dans une transaction, mais s'il y en a une, elle peut y participer. PROPAGATION_REQUIRED : la mthode courante doit obligatoirement tre excut dans une transaction. Elle peut participer une transaction dja existante. PROPAGATION_REQUIRES_NEW : cration explicite d'une nouvelle transaction. PROPAGATION_NEVER : la mthode courante ne doit pas tre excute dans une transaction. PROPAGATION_NESTED : nouveaut Spring. Utile en cas de pb sur transaction avec Nombreuses donnes dont qqs une avec pb.

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGNiveaux d'IsolationISOLATION_DEFAULT : utilise le niveau d'isolation de la base de donnes de l'application. ISOLATION_READ_UNCOMMITED : autorise lecture sale (dirty read) ISOLATION_READ_COMMITED : n'autorise pas lecture sale. ISOLATION_REPEATABLE_READ : n'autorise ni lecture sale, ni lecture rptable ISOLATION_SERIALIZABLE : n'autorise ni lecture sale, ni lecture rptable, ni lecture fantome Niveau le plus fort, mais pb de PERFORMANCE !Oracle, postgres.

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGValeurs par dfautPropagation : PROPAGATION_REQUIRED Isolation : ISOLATION_DEFAULT Read-only : false Timeout : none

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGTransaction programmativeHibernate fournit objet TransactionTemplate Quelle implmentation de PlatformTransactionManager ? Objet TransactionDefinition Objet TransactionStatus

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGTransaction programmativewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGTransaction dclarativeMise en oeuvre proxy (POA) Choix Mtadonnes : XML Choix Mtadonnes : @Transactional

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGIntercepteur : proxy AOPwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConfiguration XML : namespace txwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConfiguration XML : interception AOPwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING Dclaration attribut de Transaction(XML)

    PROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIRED,readOnlywww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING @Transactionalwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 7 : Intgration Struts / Spring Valeur ajoute et limite de Struts Ce qu'apporte Spring Struts Stratgie d'intgration : dlgation de Proxy

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAtouts Struts / Spring Struts apporte une couche MVC simple et bien connue des dveloppeurs mais struts ne gre pas le Modle !!! Spring apporte un accs simple en non intrusif une couche mtier performante Struts + Spring = bon duo !

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGTechnique : dlgation d'actionsGrace la technique de dlgation dactions, il est possible davoir des classes tant la fois des actions struts et des beans Spring. Lide est dutiliser une classe spcifique ( org.springframework.web.struts.DelegatingActionProxy ) afin de dlguer Spring la gestion de laction struts. Ces nouvelles actions struts ont des capacits bien suprieures aux actions classiques, rduisant ainsi les faiblesses de Struts.www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGMise en oeuvre Struts + SpringDans la pratique, nous continuons coder actions struts normalement. La seule diffrence est que , dans struts-config.xml, la classe de laction estorg.springframework.web.struts.DelegatingActionProxy ,

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGMise en oeuvre Struts + SpringDans le fichier de configuration Spring actionservlet.xml, cette action est configure de la faon suivante : Spring ralise le lien avec laction struts via le nom du bean, identique au chemin de laction Struts /login Ici LoginActrion est la fois une action Struts complte (qui hrite de Action, DispatchAction) et un bean Spring part entire, bnficiant de linversion de contrle Ici le service (userMAnager) est inject laction. Ce service apellera le bean userDAO www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGMise en oeuvre Struts + SpringDans Les nouvelles actions Struts : ne lient plus la couche prsentation une implmentation donne de la couche mtier. sont plus facilement testables de manire unitaire du point de vue de laccs au service. disposent dun mcanisme dinterception; tant des beans Spring, nous pouvons utiliser la POA pour intercepter leurs mthodes. Cela peut permettre dajouter des mcanismes transversaux de scurit, monitoring, logs, cache, transactionwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING2 avantages retenirSpring va grer parfaitement le M de MVC, ce que Struts ne gre pas. Bonne pratique : injection dobjets dans laction Struts (ex : service comme userMAnager) au lieu de passer par des new() ou des JNDI Lookup. Le Code plus modulaire avec meilleure testabilit.www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 8 : Spring MVCCinmatique requte HTTP Dispatcher et Controlleur Spring MVC Exemples Mapping et ViewResolver Bonnes pratiqueswww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGArchitecture & cinmatique

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGDispatcheur

    www.objis.com - Formation SPRING*web.xml

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGControleur

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConfig des couches applicatives

    www.objis.com - Formation SPRING*Voir le TP Ddiweb.xml

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple handler Mapping : Ici les URLs home.htm et login.htm sont grs par SpringM VC

    www.objis.com - Formation SPRING*objisapp-servlet.xml

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple viewResolver (Vue afficher) Ci-dessous, toutes les vues sont des JSP places dans \WEB-INF\jsp

    www.objis.com - Formation SPRING*objisapp-servlet.xml

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGMthodologie dv Spring MVCConfigurez le web.xml et ajoutez librairies Spring MVC Crez les fichiers XML de dfinitions de beans reprsentant les diffrentes couches de l'application Dfinissez vos beans dans les fichiers dans l'ordrela couche DAO la couche Servicela couche Controleur.

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 9 : ScuritIntroduction : les tapes Authentification Autorisations

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGIntroductionAvec Spring,comme avec serveur d'application J2EE (Conteneur EJB), il est possible de grer la scurit de faon programmative ou dclarative Intercepteurs : Proxy POA si on scurise des mthodes ou bien filtres de servlets si on scurise des ressources web (JSP,IMG...) Authentification & Autorisations (Fichier, DB, LDAP...)

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING4 tapes (dont 2 facultatives)Authentification : Qui tes vous ? Autorisation : tes vous autoris ? Lancer en tant que (facultatif) Aprs invocation (facultatif) : avez-vous le droit de profiter des infos renvoyes par resource scurise ?

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAuthentification www.objis.com - Formation SPRING*Login/password dans une base de donnes

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSpring Security Module Scurit de Spring anciennement nomm 'Acegi Security' http://static.springframework.org/spring-security/site/index.html

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGLibrairies Spring security www.objis.com - Formation SPRING*Fichiers supplmentaires ddis la scurit Spring

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConfiguration web.xml : Filtre de scuritwww.objis.com - Formation SPRING*web.xml

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConfiguration web.xml : ContextListenerwww.objis.com - Formation SPRING*web.xml

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGStratgie de scurit et utilisateurs www.objis.com - Formation SPRING*ApplicationContext-security.xml

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGStratgie de scurit et utilisateurs www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGService 'Remember Me''Se souvenir de moi' Solution 1 : infos dans Cookie Solution 2 : infos dans Base de donnes

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGService 'Remember Me'

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAuthentification base de donneswww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAuthentification 'prt l'emploi'www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAuthentification personalisewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGMots de passe scurisswww.objis.com - Formation SPRING*Redefinition daoAuthenticationProviderStratgie d'encodage (ici Md5)Cl d'encryption (ICI la cl change en fonction du username)

    www.objis.com - Formation SPRING

  • www.objis.com - Formation [email protected] - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 10 : Spring / JMSAPI JMS Fournisseur ActiveMQ JmsTemplate de Spring Envoi/rception de messagewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGPrsentation JMSJava Messages Service ( API 1.1 et 1.0.2) Envoyer / recevoir des messages Messages Synchones / asynchrones Queue (point--point) / Topics (abonnement) Produits : WebSphere MQ (IBM), Active MQ (Apache)www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAPI JMSjavax.jms.Connection / ConnectionFactoryjavax.jms.Session javax.jms.Destination (Queue ou bien Topic ?)javax.jms.Message / TextMessage javax.jms.MessageProducer (mthode send(Msg))javax.jms.MessageConsumerwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGQueue / Topicwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGIntgration Spring / JMSEnvoi / rception synchrone : JmsTemplate org.springframework.jms.core Messages asynchrones : Listeners JMS 1.0.2 et JMS 1.1 Gestion d'exceptions + rduction codewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGActive MQFournisseur JMS de la fondation Apache http://activemq.apache.org Port d'coute par dfaut : 61616 Fabrique de Connection (ActiveMQConnectionFactory) Queue / Topicswww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConfig Active MQ dans Springwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEnvoi message avec JmsTemplatewww.objis.com - Formation SPRING*InjectionsCallback MessageCreatorQueue ou Topic ?

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGConfiguration JmsTemplatewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGRception Asynchrone de messagewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGRception Asynchrone de messagewww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGNamespace jmswww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGEtape 11 : TestsIoC et tests unitaires Spring et les tests d'intgration MockObjects TestContextwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSpring et tests unitairesAvant Spring 2.5 : support junit 3.8 Spring 2.5 : support Junit 4 , TestNG Avec IoC , tests unitaires facilits Avec Spring , test integration facilitswww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSpring 3.0Java5+ Support Web Services : REST Ainsi que nouvelles @MVCSpring Expression Language Unified EL ++Validation dclarative types Modle Hibernate validator (JSR 303) Support Portlets 2.0 Action / Evevement / ResourceSupport de Java 6 JSF 2.0, JPA 2.0,...www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSpring 3.0 : nouvelle structure de projetBuild des podules Grs par Maven 1 module = 1 jar Plus de spring.jar !!! Build du projet Bas sur Ivy Procdure de dploiement Gestion des dpendances Gnration des manifests OSGiwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGIoC et tests unitairesAvec l'injection de dpendences, le code dpend moins du conteneur qu'avec serveur J2EE Vos POJO peuvent tre tests unitairement via new(), SANS conteneur Spring (contrairement aux EJB2). Test simplifi couche Service en isolant la couche DAO via Objet DAO factice (sans acces rel DB) www.mockobjects.com Spring apporte quelques objets factices org.springframework.mockwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGObjets factice de SpringJNDI : org.springframework.mock.jndi Servlets : org.springframework.mock.web Portlets : org.springframework.mock.web.portletwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSupport test unitaires dans SpringReflectionTestUtils, Package org.springframework.test.util Utile pour test unitaires & d'intgration Setter un champ non public ou appeler une mthode prive (Hibernate/JPA) AbstractModelAndViewTests (pour Spring MVC) Test unitaire d'objet ModelAndView (controlleur) Classe ModelAndViewAssert www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGSupport test intgrationlib/spring-test.jar Package org.springframework.test + lent que test unitaire JUnit + rapide que test Cactus TestContext Framework (java5+) Tests d'intgration org.springframework.test.context AbstractTransactionalJUnit4SpringContextTests www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGTestContext : Demo PetClinicwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGPourquoi utiliser Spring?Spring est un bon choix dans applications web multicouches. En particulier les beans de chaque couche peuvent tre grs et injects l'excution. Spring fournit une bone abstraction pour application Hibernate. Duo Spring/Hibernate gagnant. Avec JDBC spring facilite accs aux donnes. Si vous avez une couche 'service' associer une vue, Spring cre de la valeur ajoute.www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGRessourceswww.springframework.orgAPI :http://static.springframework.org/spring/docs/2.5.x/apiLivres : Spring in action (Craig walls. Editions Manning)Spring par la pratique (Julien Dubois , Editions Eyrolles)J2EE without EJB (Rod Johnson) www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGArchitecture multicouche*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGArchitecture J2EE*www.objis.com - Formation SPRING

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGLivraisons J2EE*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGServices J2EEJNDI : Java Naming Directory Interface JCA : Java Connector Architecture JTA : Java Transaction API JPA : Java Persistence API JMS : Java Message Service JAAS : Java Authentication & Authorisation Service JAX-WS : Java API for XML Web Services JAXB : Java API for XML Binding*www.objis.com - Formation SPRING

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGExemple log4j.xml*www.objis.com - Formation SPRING

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING Vue 'DashBoard' SpringSource Tool Suite*www.objis.com - Formation SPRING42135

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING Interroger la base de connaissances SpringSource Tool Suite*www.objis.com - Formation SPRING42135

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRING Configurer SpringSource Tool Suite*www.objis.com - Formation SPRING213

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGModularit dynamique (au dploiement) rendue possible avec OSGi*www.objis.com - Formation SPRINGservice-2-0.jargui-2-2-2.jarservice-1-1.jardao-1-0.jarLogAspect-1.1.jargui-1-1-4.jargui-1-0-0.jar

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGDploiement de serveurs SpringSource dans un nuage Amazon EC2*www.objis.com - Formation SPRING...Amazon EC2 +

    S3 sts

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGAutres Formations ObjisArchitectures SOA Dveloppement de services web Dveloppement et Conception XML Dveloppement Struts Dveloppement Hibernate Dveloppement .NET Intgration continue et mthodes agiles Voir catalogue sur www.objis.comwww.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

  • www.objis.com - Formation SPRINGContact : Douglas MbiandouIngnieur INSA Lyon (2000) 8 ans d'expriences projets SI Architecte / Formateur Java Directeur technique & Resp. pdagogique Objis [email protected] Tl : 04 78 29 37 26 / 06 60 46 76 45

    www.objis.com - Formation SPRING*

    www.objis.com - Formation SPRING

    ***********************************************************************************************************************************************************