Copyright © 2006-2007 – ESUP-Portail esup-commons : un framework de développement pour le projet ESUP-Portail Pascal Aubry sur-connaissant IFSIC / Université

Slides:



Advertisements
Présentations similaires
Point sur le CMS Web InfoGlue et nouveau canal « lecture des annonces » ESUP-days Journées du 22 et 23 juin à Paris.
Advertisements

Plan Portlets La norme JSR-168 Qu'est-ce qu'une Portlet ?
Introduction Les types de canaux Les simplesRSSWeb ProxyTransformation Les différents types de canaux Les canaux prédéfinis.
Département Édition - Intégration SEMINAIRE SOA Migration du canal Esup MonDossierWeb Olivier Ziller / Charlie Dubois Université Nancy 2 16 octobre 2007.
Introduction Fonctionnement PluginsConfigurationLes données Le framework MAG Framework de conception de canaux complexes Implémente IChannel Possède son.
Tomcat et son fonctionnement XML
Copyright 2008 © Consortium ESUP-Portail EsupDay /02/2009 Atelier stockage Raymond Bourges, Université de Rennes 1.
Copyright © 2006 – ESUP-Portail - Université de Rennes 1 - Pascal Aubry tutoJres 1er juin 2006 Diffuser un développement Pascal Aubry.
Université Rennes 2 Haute Bretagne
Université Rennes 2 Haute Bretagne Environnement Numérique de Travail Formation pour la mise en place de lapplication « Esup-Helpdesk » pour le CRI (demande.
Outils de communication. 17/11/2005Raymond Bourges2 Outils de communication Site Web Documentation (Bientôt gérée avec inJAC) Espace de téléchargement.
ESUP-FWA Connexion simplifiée à Apogée & Harpège via l'ENT
Retour d’expériences : Qualité et co-développement au consortium ESUP
Nouvelle version du canal Esup MonDossierWeb
Le consortium et la mutualisation entre les universités
Copyright 2012 © Consortium ESUP-Portail ESUP days, Paris, 8 février 2012 Portail ESUP Version 4 En avant Julien Marchal.
Etat d'avancement ORI-OAI Interaction avec les ENT.
Architecture. Architecture Enjeux Les Enjeux Trouver une solution e-Business Accessible à partir d’un navigateur Web Accédant au système via un Portail.
Programmation Web Les JSP.
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -
Projet Webase. I. La définition du projet 1. Lexistant : Webase 4 2. Cahier des charges 3. La répartition des données 4. Le modèle de données 5. Le choix.
Cours d'administration Web - juin Copyright© Pascal AUBRY - IFSIC - Université de Rennes 1 Mandataires, caches et filtres Pascal AUBRY IFSIC - Université
Le helpdesk de l’IFSIC Pourquoi ? Comment ?
Le mécanisme de Single Sign-On CAS (Central Authentication Service)
Copyright 2008 © Consortium ESUP-Portail ESUP-Days 7, Paris, 3 février 2009 Evolutions de esup-helpdesk v3 Pascal Aubry.
Copyright 2010 © Consortium ESUP-Portail TOC ESUP-Days 10, Paris, 2 juillet 2010 De LDAP à Kerberos à lUniversité de Rennes 1 Pascal Aubry François Dagorn.
Copyright © 2007 – ESUP-Portail ESUP-Days, Paris, 25 janvier 2007 Les projets de lincubateur Janvier 2007.
Le point sur l’incubateur
Copyright © 2006 – ESUP-Portail ESUP-Days, Paris, 22 juin 2006 Le cycle de vie des projets Ou comment contribuer au projet ESUP-Portail.
ESUP-Portail Helpdesk : évolutions de la version 3
Single Sign-On open source avec CAS (Central Authentication Service)
Copyright © – ESUP-Portail esup-commons : un framework de développement pour le projet ESUP-Portail Pascal Aubry IFSIC / Université de Rennes.
Copyright © – ESUP-Portail esup-commons : où en est-on ? Pascal Aubry IFSIC / Université de Rennes 1
JSP 2 Crash Course Michel Buffa UNSA
Bonnes pratiques ez publish
Projet JEE approfondi Stripes / Toplink
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Forum JEE: framework STRUTS 1 et iBATIS
Mise en place de quotas d’impression
XML-Family Web Services Description Language W.S.D.L.
Esup Days 2010 CALIFORNIA INSTITUTE OF TECHNOLOGY UNIVERSITE PIERRE ET MARIE CURIE.
Le langage PHP 5.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
SERVLETS PRESENTATION
Développement Rapide dApplications Web avec.NET « Mon premier site »
Une base de données XML sur le net
Projet JAVA EE Approfondi
Saisie de l’Offre de Formation (SOF)
Architecture dun site de vente au détail1 Modèle d'un site simple de vente Lexemple du livre Ruby on Rails Partie II Java Adventure Builder Demo Réalisé.
JSP (Java Server Pages)
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Adaptée du cours de Richard Grin
Initiation au web dynamique - TP
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
19 Mai 2009 CADOT, ROMON, NOEL, GUILLOUET, MONGENET-LAMAISON.
Content Management System CMS. Pourquoi ? Obligation de ressaisir des contenus publiés à plusieurs endroits Pas d’outils de gestion de qualité de l’information.
Metro Web Services Ben Yaflah Marouen Dhrif Mohamed Hbib Hajlaoui Nader.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Struts.
Chantier Factory Prototype Bankonet Cellule Architecture – Zoom Chantier Le pictogramme permet de rappeler rapidement la technologie concernée par le Zoom.
Places of worship. Qu’est-ce que c’est? –C’est une mosquée. C’est le mosquée de Washington,D.C. Les muselmans vont au mosquée le vendredi.
Présentation ESTRABOX
Initiation au web dynamique Licence Professionnelle.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Serveurs Web à contenu dynamique Emmanuel Cecchet INRIA Rhône-Alpes, Projet Sardes Rice University, Systems lab
TWP Toolkit Formation 21/10/2009.
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Transcription de la présentation:

Copyright © – ESUP-Portail esup-commons : un framework de développement pour le projet ESUP-Portail Pascal Aubry sur-connaissant IFSIC / Université de Rennes 1

Copyright © – ESUP-Portail Notes Parler de louverture des applications à travers des WS

Copyright © – ESUP-Portail Copyright Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.

Copyright © – ESUP-Portail Once upon a time… Utilise dès que possible des outils de haut niveau ! Sépare bien tes couches ! Abstrait tes objets ! Relis ton code deux semaines après !

Copyright © – ESUP-Portail Lidéal standard Logique métier Accès aux données Bases de données Accès aux services Autres sources Logique applicative Présentation

Copyright © – ESUP-Portail Dans la pratique ;-) Bases de données Application Autres sources

Copyright © – ESUP-Portail Séquence nostalgie // logique applicative if (!empty($_POST["userId"])) { // accès aux données $c = ) ; $res = $conn->Query( "SELECT * FROM user WHERE id = '" + userId + "'") ; $row = $res->FetchRow(DB_FETCHMODE_ASSOC); // logique métier $displayName = $row["display_name"]; // présentation echo "Hello ". userName. "!"; }

Copyright © – ESUP-Portail En sappuyant sur lAPI uPortal Bases de données Tout le reste Autres sources Présentation (XSLT) XML XHTML

Copyright © – ESUP-Portail Les problèmes de cette approche Maintenance de XSLT Ladhérence de la présentation reste très importante –On ne remonte pas les objets métier –On produit du XML lié à la présentation Tout est mélangé, il faut être sur-connaissant

Copyright © – ESUP-Portail Le grand test de lété 2007 Écrit une requête SQL ? Écrit une classe Java ? Écrit une requête LDAP ? Utilisé un cache ? Écrit un fichier XML, XSL ? Été voir un cookie de près ? Inspecté un fichier WSDL ? Modifié une CSS ? Affiché la source dune page HTML ? Envoyé un mail en commençant par HELO ? Tapé une URL « à la main » ? Appuyé sur le bouton « Démarrer » ?

Copyright © – ESUP-Portail Résultats du test Si vous avez répondu plus dune fois oui, vous êtes sur-connaissant ! Sinon, vous vous êtes sans doute trompé de salle, cest pour ça que vous ne pigez rien depuis une heure Vous êtes à Paris 5 aux ESUP-Days ;-)

Copyright © – ESUP-Portail Être ou ne pas être sur-connaissant Le problème nest pas là… –Les applications font sensiblement la même chose quil y a quelques années, et pourtant nous y arrivions bien… –Nous étions sur-connaissants ! Quest ce qui a changé ? –Hier : PHP + HTML + SQL + LDAP –Aujourdhui : Java + XML + XSLT + Hibernate/Ibatis + WS + LDAP + i18n + CAS + JSR Portail + Spring + JSF + … Développeur : un métier à part entière

Copyright © – ESUP-Portail Alors, faut-il vraiment aller vers ces technos ? Simplifier la maintenance –Outils de plus haut niveau –Séparation des couches Faciliter ladaptation aux configurations locales –Injection des données –Utilisation dinterfaces Permettre lévolution des fonctionnalités Augmenter la productivité –Une fois la première marche franchie

Copyright © – ESUP-Portail Larchitecture de esup-commons Présentation Logique applicative Logique métier Données Persistance Requêtes web domain beans base LDAP portail URLs I18n Cache Accès Authentification

Copyright © – ESUP-Portail Portlet/servlet : même combat Nous ne développons pas des portlets ou des servlets, nous développons des applications Il est très intéressant de pouvoir faire tourner une application tantôt en servlet, tantôt en portlet –Environnement de Développement plus simple en servlet –Permet de séparer les problèmes inhérants aux portlets Publication, déploiement, interaction avec le portail –Diffusion en quick-start Problème avec Spring : deux MVC distincts –Portage facile mais maintenance double

Copyright © – ESUP-Portail Le MVC Spring (servlet) import org.springframework.web.servlet.mvc.Controller; import org.springframework.web.servlet.ModelAndView; public class ServletController implements Controller { public ModelAndView handleRequest( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { logger.info("returning hello view"); return new ModelAndView("hello.jsp"); } }

Copyright © – ESUP-Portail Le MVC Spring (portlet) import org.springframework.web.portlet.mvc.Controller; import org.springframework.web.portlet.ModelAndView; public class PortletController implements Controller { public ModelAndView handleRequest( PortletRequest request, PortletResponse response) throws ServletException, IOException { logger.info("returning hello view"); return new ModelAndView("hello.jsp"); } }

Copyright © – ESUP-Portail Le MVC JSF public class JsfController { public String callback() { logger.info("returning hello view"); return "hello"; } } navigation-rules.xml – anyView.jsp hello hello.jsp

Copyright © – ESUP-Portail Alors, Spring ou JSF ? Les deux ! Spring pour la gestion des beans –De loin le meilleur (JSF le fait également) –Outils de développement (Spring IDE) JSF pour la logique applicative et la présentation –MVC : même code portlet/servlet –Présentation : taglib MyFaces + Tomahawk

Copyright © – ESUP-Portail Spring IDE

Copyright © – ESUP-Portail Larchitecture de esup-commons Gestion des beans web Présentation Logique applicative Logique métier Données Persistance Requêtes web domain beans base LDAP portail URLs I18n Cache Accès Authentification

Copyright © – ESUP-Portail Déploiement simplifié (build.properties) Build.properties –Portlet deploy.type=portlet deploy.home=C:/uPortal/portlets –Servlet deploy.type=servlet deploy.home=C:/Tomcat/webapps –Quick-start quick-start=true Adapter WEB-INF/web.xml (exemples fournis)

Copyright © – ESUP-Portail Les données : Ibatis ou Hibernate ? Peu importe ! /** * The DAO service interface. */ public interface DaoService { /** id the User that corresponds to an id. */ User getUser(String id); }

Copyright © – ESUP-Portail Ibatis /** * See /properties/dao/dao-example.xml */ public class HibernateDaoServiceImpl implements DaoService { /** DaoService#getUsers() */ public List getUsers() { return sqlMapClientTemplate.queryForList("getUsers", null); } }

Copyright © – ESUP-Portail Hibernate /** * See /properties/dao/dao-example.xml */ public class HibernateDaoServiceImpl implements DaoService { /** DaoService#getUsers() */ public List getUsers() { return getHibernateTemplate().loadAll(User.class); } }

Copyright © – ESUP-Portail Larchitecture de esup-commons Gestion des beans data web Présentation Logique applicative Logique métier Données Persistance Requêtes web domain beans base LDAP portail URLs I18n Cache Accès Authentification

Copyright © – ESUP-Portail Les « plus » de esup-commons Gestion des versions Gestion des exceptions Internationalisation native Envoi de courriers électroniques Commandes en ligne Gestion de lauthentification Accès au portail Accès à LDAP Pagination des données Taglib dynamique Gestion des URLs directes (deep linking) Gestion de cache

Copyright © – ESUP-Portail Intéressant avec Hibernate Gestion automatique de la structure de la base –Ant init : création –Ant upgrade : mise à jour Gestion des versions –Assurer que les versions de lapplication et de la base de données sont les mêmes, ou au moins compatibles –Essentiel en environnement cluster

Copyright © – ESUP-Portail Gestion des exceptions

Copyright © – ESUP-Portail Gestion des exceptions Envoi possible par

Copyright © – ESUP-Portail Internationalisation native Utilisation de bundles (RBE) –

Copyright © – ESUP-Portail Envoi de courriers électroniques Pour envoyer nimporte quoi… –Rapports dexception, alertes, informations de connexion Possibilité denvoi en asynchrone –Pour éviter les timeouts Envoi plain/text et text/html Possibilité dinterception en période de test

Copyright © – ESUP-Portail Commandes en ligne Gestion des exceptions et de laccès aux données Ouverture de lapplication grâce à des web services web rendering web controller domain services data service data persistence Gestion des beans data batch commandsweb requests batch controller domain beans database web LDAP service portal service URL service i18n service cache service data access auth. service

Copyright © – ESUP-Portail Gestion de lauthentification Externalisation vers un service dauthentification Implémentations pré-définies –Pour un filtre CAS –Pour les portlets –Pour une authentification manuelle (applicative) Classes pour développer « offline »

Copyright © – ESUP-Portail Accès au portail esup-portal-ws –Recherche des utilisateurs –Recherche des groupes –Récupération des sous-groupes –Récupération des hiérarchies complètes –Récuparation des attributs utilisateurs Implémentation fournie pour uPortal 2.5 ws-server SOAP application database, LDAP, … ws-client

Copyright © – ESUP-Portail Accès à LDAP Pour récupérer les attributs des utilisateurs –Pas seulement lutilisateur connecté Cache des résultats Pour vérifier et appliquer des filtres LDAP Pour rechercher une personne dans lannuaire –Beaucoup plus simple que le canal dédié Basé sur LdapTemplate

Copyright © – ESUP-Portail Recherche LDAP

Copyright © – ESUP-Portail Pagination Ergonomie –Pour présenter de longues listes de résultats Performance –Pour ne pas charger tous les résultats dune requête alors que lon nen affiche que certains

Copyright © – ESUP-Portail Un taglib JSF.... Les tags sont configurés dynamiquement par un bean (TagsConfigurator)

Copyright © – ESUP-Portail Gestion des URLs directes (deep linking) Génération des URLs directes, en portlet et servlet –Map params = new HashMap (); params.put("page", "about"); String url = urlGenerator().url(params); String urlViaCas = urlGenerator().urlViaCas(params); – rennes1.fr/login?service=http%3A%2F%2Flocalhost%3A808 0%2FLogin%3FuP_fname%3Desup- diskquota%26uP_args%3DcGFnZT13ZWxjb21l

Copyright © – ESUP-Portail Gestion des URLs directes (deep linking) Prise en charge de ces URLs pour des liens directs vers certaines pages de lapplication –public String redirect(Map params) { if (params == null) { return null; } if ("about".equals("page")) { aboutController.enter(); return "/stylesheets/about.jsp"; } }

Copyright © – ESUP-Portail Gestion des caches Disponibilité native de caches Gains en performance –Requêtes LDAP –Requêtes au portail –Envoi des rapports dexception Basé sur EhCache

Copyright © – ESUP-Portail Comment démarrer ? Prise en main –Esup-example : une application dexemple, pour voir comment on configure une application bâtie sur esup- commons Démarrage dun développement –Esup-blank : une application blanche qui fournit une application blanche, canevas dun nouveau développement –Ant rename-application Accompagnement –Liste –Formation fin 1er trimestre 2007

Copyright © – ESUP-Portail Utilisation actuelle Achevé –Esup-diskquota (gestionnaire de quotas disque) En cours –Esup-print (gestionnaire du contrôle daccès aux imprimantes et des crédits dimpression) –Esup-lecture (lecture des annonces) A venir –Esup-helpdesk (suivi des demandes utilisateurs) –…

Copyright © – ESUP-Portail esup-commons : la méthodologie Documentation pas-à-pas de la procédure dinstallation –Installation et configuration dEclipse Callisto, Checkstyle, RBE, Spring IDE… –Utilisation de SubVersion (sourcesup) Récupération des fichiers de configuration des versions antérieures pour faciliter les mises à jour –Ant recover-config

Copyright © – ESUP-Portail Bénéfices attendus de esup-commons Uniformiser les installations dapplications –Mêmes fichiers de configuration Faciliter les contributions –Utilisation de standards uniquement Gagner en productivité –Framework prêt à utiliser Faciliter la mobilité des développeurs –Facile de passer dun projet à un autre Fiabiliser les applications –Outils de haut niveau

Copyright © – ESUP-Portail Mais au fait, vous vous dites sûrement… Combien de temps faut-il pour se mettre à une usine comme ça ? –Pas tant que lon croit Noublions pas quavec dautres frameworks, ou sans framework du tout, nous étions tout aussi sur-connaissants… –Sinon plus

Copyright © – ESUP-Portail Vous trouvez tout cela bien compliqué… Ce nest pas la solution qui est compliquée cest le problème « Ne me dites pas que ce problème est difficile. S'il n'était pas difficile, ce ne serait pas un problème » Ferdinand Foch

Copyright © – ESUP-Portail Résumé Spring +JSF + Ibatis/Hibernate +services +méthodologie = esup-commons