Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux
Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un langage : Java Différents frameworks Un serveur applicatif : Tomcat Un serveur web : Apache Une base de donnée : PostgreSQL 3 Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Les architectures MVC et 3 tiers 4 Webase 5 avec les mains Les principaux packages Webase 5 Les fichiers de configuration de Webase 5
Obtenir des informations sur Webase 5 Obtenir des informations sur Webase 5 Il existe différents endroits où l on peut obtenir des informations sur Webase 5 : Le trac de Webase 5. Le wiki de VIA : Le manuel de l utilisateur, Le manuel du développeur, Le rapport du projet. Les todos en cours. Demander à un développeur ou sur #webase@irc.diwi.org.
Composants de Webase 5 Composants de Webase 5 Un langage de programation Java, Un meta framework Spring, Un framework MVC Struts, Un framework pour l ORM 1 Hibernate, Un framework de sécurisation AcegiSecurity, Une implémentation de SOAP 2 pour les web-services Axis, Un système de logs Log4J, Un serveur applicatif Tomcat, Un serveur Web Apache, Une base de données PostgreSQL. 1 Object Relationnal Mapping 2 Simple Object Access Protocol
Composants de Webase 5 Un langage : Java Outline 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un langage : Java Différents frameworks Un serveur applicatif : Tomcat Un serveur web : Apache Une base de donnée : PostgreSQL 3 Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Les architectures MVC et 3 tiers 4 Webase 5 avec les mains Les principaux packages Webase 5 Les fichiers de configuration de Webase 5
Composants de Webase 5 Un langage : Java Un langage de programmation : Java Le langage de programmation utilisé est Java. Pour apprendre le Java, tu peux lire les Slides de la formation de Tama et emprunter le livre Java en concentré disponible aux VIAlabs.
Composants de Webase 5 Différents frameworks Outline 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un langage : Java Différents frameworks Un serveur applicatif : Tomcat Un serveur web : Apache Une base de donnée : PostgreSQL 3 Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Les architectures MVC et 3 tiers 4 Webase 5 avec les mains Les principaux packages Webase 5 Les fichiers de configuration de Webase 5
Composants de Webase 5 Différents frameworks Un meta framework : Spring Spring est un framework un peu particulier dans la mesure où il fournit pleins d outils pour relier tous les services utiles à la création d une application web. Spring introduit notamment deux concepts fondamentaux : Dependency Injection (DI), Aspect Oriented Programming (AOP). qui seront abordés dans la section suivante. Spring vient notamment en secours d Hibernate pour le modèle (en fournissant des méthodes telles que gethibernatetemplate) et simplifie encore l accès à la base de données.
Composants de Webase 5 Différents frameworks Un framework MVC : Struts Webase5 utilise Struts comme Framework MVC. Struts s occupe notamment des parties vue et contrôleur tandis que Spring fait le lien entre les 3 couches et vient en soutien d Hibernate pour les modèles. Struts permet notamment une gestion avancée des templates grâce à Tiles un template est un assemblage de plusieurs JSPs, possibilité d héritage, etc.
Composants de Webase 5 Différents frameworks Un framework gérant la persistance des objets en base de données relationnelle : Hibernate Hibernate implémente une syntaxe SQL particulière : le HQL. Cette couche permet de ne pas être dépendant du type de base de données utilisé (PostgreSQL, MySQL, etc...) et de manipuler directement des objets, ce qui simplifie grandement les requêtes. Par exemple, select carte from CarteVIA carte join carte.emprunts emprunt where lower(emprunt.comptecaution.membre.login) =? On récupère alors un objet de type CarteVIA. Hibernate détermine la requete SQL équivalente grâce aux fichiers de mapping (en.hbm.xml) qui explicitent la correspondance table objet.
Composants de Webase 5 Différents frameworks Un framework de sécurisation : Acegi Acegi s occupe de deux problèmes importants : l authentification, l autorisation. Côté authentification Acegi est configuré pour authentifier sur le LDAP du SdE. Côté autorisation, Acegi permet de restreindre en fonction des rôles de la personne authentifiée : l accès aux différentes pages, la visualisation de certains éléments d une page, l exécution des méthodes.
Composants de Webase 5 Différents frameworks Une implémentation de SOAP pour les web-services : Axis Axis est une implémentation de SOAP qui permet à différentes applications hébergées sur des hôtes différents de partager des informations. On parle de web-service. Exemples : synchronisation de la chambre avec le SdE, communication avec le connectd.
Composants de Webase 5 Différents frameworks Un système de logs : Log4J Pour déboguer, l importance des logs est cruciale. Avec Log4J, on peut : définir le niveau de verbosité des logs des différents composants de Webase 5 (Spring, Hibernate, etc...), ajouter ses propres logs très simplement.
Composants de Webase 5 Un serveur applicatif : Tomcat Outline 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un langage : Java Différents frameworks Un serveur applicatif : Tomcat Un serveur web : Apache Une base de donnée : PostgreSQL 3 Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Les architectures MVC et 3 tiers 4 Webase 5 avec les mains Les principaux packages Webase 5 Les fichiers de configuration de Webase 5
Composants de Webase 5 Un serveur applicatif : Tomcat Un serveur applicatif : Tomcat Tomcat sert d intermédiaire entre le serveur Web et le bytecode Java produit par compilation du code de Webase. Il se charge de traduire la requête du client que le serveur web lui a transmis, d exécuter les méthodes qui vont bien, et de retourner le résultat au serveur web. Tomcat dispose d un serveur http et peut donc s exécuter de manière autonome (sur le port 8080 par défaut) ou bien derrière Apache via l utilisation du mod_jk.
Composants de Webase 5 Un serveur web : Apache Outline 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un langage : Java Différents frameworks Un serveur applicatif : Tomcat Un serveur web : Apache Une base de donnée : PostgreSQL 3 Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Les architectures MVC et 3 tiers 4 Webase 5 avec les mains Les principaux packages Webase 5 Les fichiers de configuration de Webase 5
Composants de Webase 5 Un serveur web : Apache Un serveur web : Apache On pourrait bien sûr faire tourner Tomcat sur le port 80. Maintenant, si l on souhaite également faire tourner un apache sur la même machine, il se pose un problème : les deux serveurs ne peuvent pas tourner sur le port 80. La solution : l utilisation du mod_jk. Les requêtes sont alors transmises à Tomcat par Apache. Un autre intérêt de mod_jk peut être de faire tourner plusieurs instances d un serveur Tomcat derrière le même Apache (si l ou veut découpler l état de fonctionnement pour différents virtualhosts par exemple ou pour faire du load balancing avec des tomcats répartis sur différentes machines).
Composants de Webase 5 Une base de donnée : PostgreSQL Outline 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un langage : Java Différents frameworks Un serveur applicatif : Tomcat Un serveur web : Apache Une base de donnée : PostgreSQL 3 Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Les architectures MVC et 3 tiers 4 Webase 5 avec les mains Les principaux packages Webase 5 Les fichiers de configuration de Webase 5
Composants de Webase 5 Une base de donnée : PostgreSQL Une base de données : PostgreSQL Webase 5 utilise une base de données PostgreSQL. Cependant, grâce à la couche d abstraction fournie par Hibernate, il serait extrêmement facile de changer.
Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Outline 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un langage : Java Différents frameworks Un serveur applicatif : Tomcat Un serveur web : Apache Une base de donnée : PostgreSQL 3 Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Les architectures MVC et 3 tiers 4 Webase 5 avec les mains Les principaux packages Webase 5 Les fichiers de configuration de Webase 5
Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming L injection de dépendance (DI) Un des objectifs de Spring est de découpler toutes les parties d une application web de sorte qu elles n aient pas besoin de se soucier les unes des autres pour fonctionner. Utilisation massive d interfaces. On importe ces interfaces et c est Spring qui se charge de mettre la bonne implémentation derrière. C est l injection de dépendance.
Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming L Aspect Oriented Programming (AOP) Toujours pour découpler, l AOP est une «best practice»dont le but est de séparer les aspects : transaction, logs, etc. Une fonction doit s occuper uniquement de la tâche dont elle est responsable. Utilisation abondante des annotations et des fichiers de configuration de Spring.
Les concepts importants de Webase 5 Les architectures MVC et 3 tiers Outline 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un langage : Java Différents frameworks Un serveur applicatif : Tomcat Un serveur web : Apache Une base de donnée : PostgreSQL 3 Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Les architectures MVC et 3 tiers 4 Webase 5 avec les mains Les principaux packages Webase 5 Les fichiers de configuration de Webase 5
Les concepts importants de Webase 5 Les architectures MVC et 3 tiers L Architecture MVC Avec l architecture MVC, une application web est divisée en deux entités distinctes : le modèle les données qui seront affichées, la vue la structure logique de la page web. Mais ça n est pas tout, il faut maintenant faire passer les données aux vues Rôle du contrôleur.
Les concepts importants de Webase 5 Les architectures MVC et 3 tiers L architecture 3 tiers Avec l architecture 3 tiers, une application web est divisée en trois couches : la présentation ce que l utilisateur voit, la «business logic» le cœur de l application, le DAO les données et l accès aux données. La règle d or est que chaque couche ne doit communiquer qu avec la couche juste en dessous. Ainsi, la couche présentation ne peut communiquer qu avec la couche business mais ne doit jamais communiquer directement avec la couche DAO.
Webase 5 avec les mains Les principaux packages Webase 5 Outline 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un langage : Java Différents frameworks Un serveur applicatif : Tomcat Un serveur web : Apache Une base de donnée : PostgreSQL 3 Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Les architectures MVC et 3 tiers 4 Webase 5 avec les mains Les principaux packages Webase 5 Les fichiers de configuration de Webase 5
Webase 5 avec les mains Les principaux packages Webase 5 Les principaux packages Webase 5 Le projet Webase 5 est composé de différents packages ayant chacun un rôle bien particulier. Prenons l exemple de la gestion des prêts des membres.
Webase 5 avec les mains Les principaux packages Webase 5 webase5.action.forward webase5.action.forward Les vues «génériques»de Webase 5. Dans le cadre de la gestion des prêts, cette action renvoit un forward qui affichera l ensemble des prêts du membre, le montant sur le compte de caution, etc...
Webase 5 avec les mains Les principaux packages Webase 5 webase5.action webase5.action Les classes de ce package héritent généralement d une classe correspondante dans action.forward. Par exemple, si l on souhaite créditer le compte de caution, on crée une classe MembreCrediterCompteCaution qui hérite de MembrePretsForward, crédite le compte de caution, et qui selon le cas renvoie soit un redirect, soit super.execute. Certaines actions n ont pas d action forward associé (typiquement la recherche de membre) et héritent donc simplement de la classe Action.
Webase 5 avec les mains Les principaux packages Webase 5 webase5.dao webase5.dao Data Access Objects. Ce package contient toutes les méthodes d accès à la base de données. Par exemple l interface AdministrationDao contient tous les prototypes des méthodes définies dans AdministrationImpl qui implémente les méthodes déclarées dans AdministrationDao. Dans AdministrationDaoImpl, on trouvera notamment la méthode findempruntsbymembre (utilisée par MembrePretsForward). webase5.dao.ldap Idem pour l accès au LDAP.
Webase 5 avec les mains Les principaux packages Webase 5 webase5.dao webase5.exception Les exceptions lancées par Webase. On y trouve notamment EmpruntNonRendusException.
Webase 5 avec les mains Les principaux packages Webase 5 webase5.form webase5.form Les formulaires de Webase 5. Ils permettent de récupérer les données rentrées dans le html généré. On doit y définir les variables que l on récupère et les setters et getters associés. Il est également préférable de créer une méthode validate qui s assure de l intégrité des données entrées et éventuellement une méthode reset qui se charge de remplir le formulaire avec des valeurs par défaut lors du chargement de la page ou de la réinitialisation du formulaire.
Webase 5 avec les mains Les principaux packages Webase 5 webase5.model webase5.model C est là que sont définies les classes utilisées dans le reste du code de Webase. On y trouve par exemple la définition de la classe Emprunt et de ses méthodes de base (tostring, les setters, getters, etc...). webase5.model.ldap Idem pour les classes dont les informations se trouvent dans le LDAP et non la base de données webase5. webase5.model.topologie Idem pour la base de topologie.
Webase 5 avec les mains Les principaux packages Webase 5 webase5.service webase5.service C est là que sont définies les méthodes de haut niveau associées aux différents composants logiques de Webase 5 : la permanence, les trésorerie, etc... Par exemple, l interface TresorerieService définit les prototypes des méthodes définies dans TresorerieServiceImpl qui implémente TresorerieService. On peut notamment y trouver la méthode creditercomptecaution utilisée par l action MembreCrediterCompteCaution.
Webase 5 avec les mains Les principaux packages Webase 5 webase5.ws webase5.ws C est là qu on trouve les classes utilisées pour les web-services. Par exemple, pour repiauler un membre, il y a un proxy MembreSeviceProxy qui permet à Illusion d appeler la méthode repiaulermembre de sorte de synchroniser la localisation des machines dans Webase 5 et la piaule des membres sur le campus.
Webase 5 avec les mains Les fichiers de configuration de Webase 5 Outline 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un langage : Java Différents frameworks Un serveur applicatif : Tomcat Un serveur web : Apache Une base de donnée : PostgreSQL 3 Les concepts importants de Webase 5 Dependency injection et Aspect Oriented Programming Les architectures MVC et 3 tiers 4 Webase 5 avec les mains Les principaux packages Webase 5 Les fichiers de configuration de Webase 5
Webase 5 avec les mains Les fichiers de configuration de Webase 5 acegi.xml C est là que sont définis les paramètres relatifs à l authentification et les autorisations. On trouve notamment en bas du fichier les autorisations requises pour charger telle ou telle page en fonction de l uri. Il exite une documentation très bien faite disponible à http://www.acegisecurity.org/docbook/acegi.html.
Webase 5 avec les mains Les fichiers de configuration de Webase 5 hibernate.xml Dans ce fichier, on définit les paramètres de la base de données(son type (PostgreSQL), l utilisateur avec lequel il faut se connecter, le mot de passe, etc...), du LDAP SdE et de l Active Directory afin de pouvoir effectuer les requêtes HQL de façon transparente. Il y a aussi les fichiers de mapping qui sevent à faire la correspondance entre le champ d une table et l attribut d une classe.
Webase 5 avec les mains Les fichiers de configuration de Webase 5 log4j.xml Dans le log4j.xml, on peut définir le format des logs que l on désire ainsi que le degré de verbosité des différents composants de Webase : Spring, Hibernate, etc... La syntaxe est très intuitive.
Webase 5 avec les mains Les fichiers de configuration de Webase 5 webase5-spring.xml Spring sert de glue entre les différents compsosants de Webase 5 et on trouve donc énorméments de paramètres définis dans ce fichier, notamment : l emplacement des fichiers de configuration globaux webase5.properties et mail.properties, les beans de Service, la correspondance uri action, divers beans.
Webase 5 avec les mains Les fichiers de configuration de Webase 5 struts-config.xml Dans le fichier de configuration de struts, on peut trouver : la correspondance nom du formulaire classe associée, l action à invoquer en fonction de l uri (redondance avec Spring) ainsi que le template à charger en fonction du forward appelé (donné par mapping.findforward nomduforward ) dans les actions) un lien vers la config de Tiles pour que Struts puisse faire la correspondance nom du template JSPs.
Webase 5 avec les mains Les fichiers de configuration de Webase 5 webase5-tiles.xml C est là que sont définis les templates. On définit d abord un template défaut avec le menu, le header, le footer, etc... communs à toutes les pages de Webase 5. Ensuite on crée des templates qui héritent de ce template principal en remplaçant le corps et les onglets. La syntaxe est très simple à comprendre.
Webase 5 avec les mains Les fichiers de configuration de Webase 5 C est fini! : ( FIN