Chantier Factory Prototype Bankonet Cellule Architecture – Zoom Chantier Le pictogramme permet de rappeler rapidement la technologie concernée par le Zoom L’auteur doit indiquer : la version La date du zoom Son nom Version Date Auteurs 1.0 22/02/2007 Agnès Crépet, Arnaud Cogoluègnes
Historique des révisions du document Version Date Modifications Auteur 1.0 07/12/2006 Création du document A. Cogoluègnes 1.1 12/12/2006 Compléments A. CREPET 22/02/2007 Ajouts Confidentiel | © SQLI 2006
Documents de référence Intitulé Version Date Nom du fichier / Lien Ce slide permet de lister les sources d’informations utiles concernant le Confidentiel | © SQLI 2006
Agenda du zoom Objectifs Prototype Conclusion et perspectives Architecture Nouveautés Roadmap Conclusion et perspectives Confidentiel | © SQLI 2006
Prototype - Objectifs « Laboratoire » technique Tests de nouvelles technologies Tests de nouveaux environnements Support pour les formations Base de départ pour des projets Forfait : « starter-kit » Mission d’archi : test d’archi., de produits Exemple d’architecture, de bonnes pratiques « Vitrine » Expérimenter les nouvelles solutions techniques Un bon test aussi pour le chantier IC Confidentiel | © SQLI 2006
Prototype - historique Unification des Prototypes – Chantier Factory Projet Bankonet - Fil conducteur des formations Sysdeo Mis à jour suite à une mission pour Sanofi A la base pour pour Sanofi-Aventis Agnès Crepet et Arnaud Cogoluegnes Refonte de l’architecture du prototype Sysdeo Scission en plusieurs projets: 1 pour la couche métier Plusieurs pour la couche présentation selon le framework web + projets utilitaire pour l’exportation de dataset DBUNIT Confidentiel | © SQLI 2006
Prototype - historique Architecture bankonetBusiness : Spring 2.0, Hibernate 3.2, tests unitaires (JUnit, DBUnit, JMock) + HSQLDB embarqué bakonetStruts : Struts 1.3.5 bakonetStruts2 : Struts 2.0 Hibernate 3.2, les tests unitaires (JUnit, DBUnit, JMock) Maven 2.0 Livrables Vous pouvez récupérer les sources sur : https://subversion.sqli.com/svndev/PI210-2/trunk/ic Accès au wiki (possible uniquement en interne) pour la doc correspondante : https://cmmi.sqli.com/intracap/wiki/index.php/PrototypeBankonet Relecture de Nicolas Boire Confidentiel | © SQLI 2006
Prototype - Bankonet Confidentiel | © SQLI 2006
Prototype – Fonctionnalités Hibernate 3.2 et persistance Depuis la version 3.2 : une implémentation JPA parmi d’autres Mapping (relations, héritage) exemples Relation : 1-N, N-N Concurrence (versionning) Cache de second niveau Validator Listeners Hibernate Validator Log des requêtes et profiling JDBC (Spring JDBC framework) Projet utilitaire DbUnit création de Datasets XML depuis la database Confidentiel | © SQLI 2006
Prototype – Fonctionnalités Spring 2.0 Transactions déclaratives (XML) Schéma XML Syntaxe AspectJ Nouvelles portées des beans Fichiers de Configuration distincts meilleure réutilisabilité (ex.: unit tests) Intercepteurs pour gestion des exceptions Spring Framework pour Hibernate (HibernateDAO) Comment gérer des transactions distribuées avec Spring (documentation) Utilisation d’une nouvelle portée pour les beans : scope session UserSettings Exemple pour la gestion des exceptions Management : Rollback pour les exceptions fonctionnelles Confidentiel | © SQLI 2006
Prototype – Fonctionnalités Struts 1.3.5 Validator Front controller composite (chaînes de responsabilités) Taglibs : Struts JSTL DisplayTag Tiles (composite views) Gestion de la configuration Gestion des exceptions (handlers) Intégration avec Spring Plugin (RequestProcessor or Proxy) vs ActionSupport Gestion des Locales et internationalisation Choix de la Locale (US et France) Transmission à la couche métier Customisation du Controller (nouvelles commandes dans la chaine de controller) Vérification de l’authentification Autres frameworks web: Tapestry 4.0 : Arnaud Struts 2 : Mounir Une des nouveautés de Struts 1.3 est la nouvelle version du request processor par défaut qui est implémenté sous la forme d'une chaîne de commandes. L'implémentation se base sur la bibliothèque commons-chain de Jakarta. L'idée est de décomposer le request processor en une succession de commandes unitaires. Cela permet de plus facilement changer le comportement du request processor en ajoutant ses propres commandes dans la chaîne. Auparavant, le request processor étant monolithique, il était beaucoup plus difficile de bénéficier des apports de plusieurs request processor. [edit] Configuration Le ComposableRequestProcessor est utilisé par défaut. Il trouve sa configuration dans le fichier JAR de Struts. Pour préciser le fichier définissant la chaîne de commandes, il faut ajouter un paramètre dans la configuration de l'ActionServlet, dans le fichier web.xml : <init-param> <param-name>chainConfig</param-name> <param-value>/WEB-INF/chain-config.xml</param-value> </init-param> [edit] Utilisation de Tiles Pour utiliser Tiles, il faut utiliser une autre chaîne de commandes : <init-param> <param-name>chainConfig</param-name> <param-value>org/apache/struts/tiles/chain-config.xml</param-value> </init-param> Confidentiel | © SQLI 2006
Prototype – Fonctionnalités Tests DBUNIT Classes abstraites facilitant la comparaison de datasets Projet Utils exportation datasets JUNIT JMOCK Bonnes pratiques (documentation) Confidentiel | © SQLI 2006
Prototype – fichier de configuration Confidentiel | © SQLI 2006
Prototype – Roadmap Un back office Une table de plus Gestion des autres tables Implémentation d’autres frameworks Web JSF à venir : Rémy projets blancs (starter kits, maven archetypes) Autres solutions EJB 3 pour la partie métier Jboss Seam Google Web Toolkit : Gaetan Acegi : Sylvain, Agnès Confidentiel | © SQLI 2006
Références Maven Proxy : http://maven-proxy.codehaus.org/ Maven Archiva : http://maven.apache.org/archiva Continuum : http://maven.apache.org/continuum Luntbuild : http://luntbuild.javaforge.com/ Sur l’intranet https://cmmi.sqli.com/intracap/wiki/index.php/Maven https://cmmi.sqli.com/intracap/wiki/index.php/Zoom:maven_proxy https://cmmi.sqli.com/intracap/wiki/index.php/MavenArchiva https://cmmi.sqli.com/intracap/wiki/index.php/TipsEclipse https://cmmi.sqli.com/intracap/wiki/index.php/PrototypeBankonet Confidentiel | © SQLI 2006