Description des composants de Lutece. Page/Portlet, XPage, AdminFeature,Daemon, LinkService, PageInclude, Filter/Servlet

Documents pareils
Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Création d une application JEE

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Compte Rendu d intégration d application

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

les techniques d'extraction, les formulaires et intégration dans un site WEB

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Content Management System V.3.0. BlackOffice CMS V3.0 by ultranoir 1

En date du 11 décembre 2008

Auto-évaluation Aperçu de l architecture Java EE

Alfstore workflow framework Spécification technique

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Expert technique J2EE

Cours en ligne Développement Java pour le web

SYSTÈMES D INFORMATIONS

JOnAS Day 5.1. Outils de développements

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Sommaire. 1. Présentation de WordPress. 2. Hébergement et installation. 3. Prise en main, ajouter des contenus

Projet Java EE Approfondi

Introduction MOSS 2007

3 Octobre Les Communautés MS

Application web de gestion de comptes en banques

BIRT (Business Intelligence and Reporting Tools)

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Sommaire. 1 Introduction Présentation du logiciel de commerce électronique 23

e-obs : Conception et utilisation Rémy Decoupes Ether // ums3365

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Vue d ensemble technique

Application de lecture de carte SESAM-Vitale Jeebop

Mercredi 15 Janvier 2014

RESUME DE CARRIERE. Alice JULIENNE. 23 ans Nationalité Française Développeur Web Front-End. Compétences

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

1. Installation d'un serveur d'application JBoss:

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

Nouveautés de Drupal 8. Léon

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Cedric Dumoulin (C) The Java EE 7 Tutorial

Master1 ère année. Réseaux avancés I. TP nº5 filière ISICG

La base de données XML exist. A. Belaïd

Formation : WEbMaster

Refonte front-office / back-office - Architecture & Conception -

SharePoint 2013 Développez en.net pour personnaliser SharePoint (Apps, REST, CSOM et Azure)

Jérôme Paul Attestation de Macrovision pour le cours portant sur les technologies Flexlm d administration de licences Formation à Motorola

Stage : Développement du contenu Web

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Formation en Logiciels Libres. Fiche d inscription

Catalogue Formations Jalios

Installation de Premium-RH

Celui qui vous parle. Yann Vigara

Cursus 2013 Déployer un Content Management System

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

CQP Développeur Nouvelles Technologies (DNT)

Joomla! Création et administration d'un site web - Version numérique

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

Urbanisation des systèmes d information

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Francis Mignault. ! Coauteur : Expert Oracle Application Express. ! Membre du Oracle APEX Advisory Board apex.oracle.com/vote

Contenu. Thème «responsive» pour WordPress Installer le thème responsive (disponible aussi sur le site wordpress.org) Activer ce thème

Les tableaux de bord de pilotage de nouvelle génération. Copyright PRELYTIS

Utiliser un CMS: Wordpress

Android 4 Les fondamentaux du développement d'applications Java

PerSal Manuel d installation

Cyrille GUERIN 823, place Soulanges Brossard, J4X1L8

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Formation Découverte du Web

Java pour le Web. Cours Java - F. Michel

Formation Esup-Commons V2

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Construction d'une application MVC distribuée avec Spring Remoting. Partie 1 : HttpInvoker, Hessian, Burlap, RMI

PrestaShop 1.6 Créer un site de e-commerce

PrestaShop 1.5 Créer un site de e-commerce

WebSpy Analyzer Giga 2.1 Guide de démarrage

Présentation du Framework BootstrapTwitter

Refonte des sites internet du SIEDS

Vérifier la qualité de vos applications logicielle de manière continue

Devenez un véritable développeur web en 3 mois!

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Gestion d identités PSL Exploitation IdP Authentic

Web Tier : déploiement de servlets

SITE WEB E-COMMERCE ET VENTE A DISTANCE

IBM DB2 Alphablox. d administration GC

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

2.1 Liferay en un clin d'oeil Forces, faiblesses, opportunités et menaces Résumé de notre évaluation... 5

Utilisation de Jakarta Tomcat

RÉF : 2002/COFAX/LP V1.0

Application Web et J2EE

MODE D EMPLOI WORDPRESS

PRODUCTS LIST (updated 11th January 2010)

Transcription:

AGENDA Description des composants de Lutece Page/Portlet, XPage, AdminFeature,Daemon, LinkService, PageInclude, Filter/Servlet Description de l architecture et des Frameworks Architecture : couches, packages, Framework : Freemarker, Spring, MVC Lutece Les fichiers importants PluginWizard Démo

COMPOSANTS DE LUTECE LUTECE fournis dans le CORE des API permettant de développer dans les plugins différents types de composants applicatifs. Un PLUGIN Lutèce peut implémenter un nombre illimité de ces composants. Les principaux composants sont : les rubriques de page (Portlets) les pages spéciales (XPages) les fonctionnalités d administration (AdminFeature) les daemons les linkservices les pages Includes les filtres de Servlet

PORTLETS Les pages de Lutèce sont composées de portlets. Les portlets sont des blocs de contenus positionnés dans une page du site. Essentiellement utilisé pour la partie éditoriale, un portlet peut présenter du contenu du site ou provenant d une application métier distante Portlet 1 Portlet 3 Portlet 2 Portlet 4

XPAGES Les Pages Spéciales (XPage) sont des Content Service qui permettent de publier en front-office des pages du site qui n appartiennent pas à l arborescence éditoriale du CMS. Elles servent à présenter du contenu de type applicatif L url d accès au front doit utiliser le paramètre page=<xpage-name> : http://alaffiche.apps.paris.mdp/billetterie/jsp/site/portal.jsp?page=billetterie&action=fiche-spectacle&product_id=198

ADMIN FEATURE Les fonctionnalités d'administration correspondent à l'ensemble des fonctions disponibles dans le module. Pour chaque fonctionnalité correspond un droit qui peut être attribué à un utilisateur. Lorsque l'utilisateur est autorisé, la fonctionnalité s'affiche dans le menu du back-office Lutèce.

DAEMONS Toute sorte de traitements automatiques peuvent être lancés en arrièreplan de manière asynchrone à travers des Daemons applicatifs : envoi de mails, indexation, purge de données, mise à jour du cache..

LINKSERVICES Il est possible d insérer via un bouton placé dans l éditeur riche du back-office des ressources Lutèce sous forme d inclusions HTML

PAGES INCLUDES Des ressources du sites peuvent être insérées dans les pages du site grâce à des marqueurs freemarkers. Il est ainsi possible d insérer autour du contenu standard d une page ou d une Xpage du contenu complémentaire <span class="accessibility-link"> <a href="jsp/site/portal.jsp?#menu" target="_top">menu de navigation principale</a> <a href="jsp/site/portal.jsp?#menu_rubrique" target="_top">menu de navigation de la rubrique</a> <a href="jsp/site/portal.jsp?#page" target="_top">contenus de cette page</a> <a href="jsp/site/portal.jsp?#infos_mairie«target="_top">mairie, coordonnées et horaires</a> </span>

SERVLETS ET FILTRES DE SERVLETS Chaque plugin LUTECE peut ajouter des filtres de servlet et des servlet sans modification du fichier web.xml Cela permet le déploiement unitaire du plugin sans modification des fichiers du composant core EX : FILTRES du plugin SEO pour la réécriture d URL

ARCHITECTURE LOGICIELLE

PRINCIPES D ARCHITECTURE Règles de nommage et formatage strictes Arborescences basées sur la notions de plugins et modules : Classes Java, images, JSP, templates, Formatage (jalopy:format) Code minimal dans les JSP Choix basé sur une approche «Moteur de templates» JSPBean + Templates Freemarker Code Java structuré en couches Présentation (package web), Service (service), Métier + persistance (business) Modularité, Généricité et injection des dépendances Accès aux données DAO SQL ou JPA Objectifs : Simplicité, lisibilité, homogénéité, modularité, extensibilité bref MAINTENABILITE!

FREEMARKER Le moteur de template Freemarker est utilisé pour toute la production des pages HTML des AdminFeatures (Back Office) et des XPages (Front) JAVA HTML // Use constants for templates and markers private static final String TEMPLATE = «template.html»; private static final String MARK_PERSON = «person»; <b>first name : </b> ${person.firstname} <br/> <b>last name : </b> ${person.lastname} <br/> Map<String,String> model = new HashMap<String,String>(); Person person = new Person(); Person.setFirstName( «John» ); Person.setLastName( «Doe» ); Model.put( MARK_PERSON, person ); HtmlTemplate t = AppTemplateService.getTemplate( TEMPLATE, locale, model ); t.gethtml();

SPRING Le framework Spring est utilisé très largement pour l injection de dépendances (IoC). Chaque plugin dispose d un fichier de contexte pour déclarer ses beans. Tous les DAO sont par défaut «injectés» via Spring. La récupération des beans se fait par les méthodes suivantes : MyInterface bean = SpringContextService.getBean( «BEAN_NAME ); (Possibilité d utiliser l annotation @Inject) List<MyInterface> beans = SpringContextService.getBeansOfType(MyInterface.class );

FRAMEWORK MVC Intégré au noyau (core) depuis la version 4,1 Basé sur des annotations (@Controller, @View, @Action) Identique pour le Back et Front (AdminFeature et XPage)

LES PRINCIPAUX FICHIERS Les fichiers de configuration : db.properties config.properties Les fichiers des plugins : les fichiers de description en XML les fichiers de contexte (Spring) les fichiers de propriétés les fichiers de ressources i18n

LE FICHIER DB.PROPERTIES Le fichier db.properties se trouve dans le répertoire WEB-INF/conf. Il contient les paramètres de connexion à la(les) base(s) de données. Voici sa version par défaut pour MySQL les paramètres du pool «portal» (d autres configurations sont expliquées dans le Wiki) # db.properties portal.poolservice=fr.paris.lutece.util.pool.service.lutececonnectionservice portal.driver=org.gjt.mm.mysql.driver portal.url=jdbc:mysql://localhost/lutece?autoreconnect=true&useunicode=yes&characterencoding=utf8 portal.user=user portal.password=pwd Nom de la base portal.initconns=2 Nom du serveur portal.maxconns=50 portal.logintimeout=2 Identifiant de connexion portal.checkvalidconnectionsql=select 1

LE FICHIER CONFIG.PROPERTIES Le fichier config.properties se trouve dans le répertoire WEB-INF/conf. Il contient des paramètres d environnement concernant l instance de Lutece : - Chemin des fichiers de logs - Niveau de logs (DEBUG, INFO, WARNING, ERROR) - Adresse du serveur mail - Etc

LES FICHIERS XML DE DESCRIPTION DES PLUGINS Ces fichiers sont situés dans le répertoire WEB-INF/plugins Ces fichiers décrivent pour chaque plugin : - ses informations (nom, description, auteur, ) - les contraintes de base de données et de version du core - ses composants (portlets, adminfeatures, daemons, ) <?xml version="1.0" encoding="iso-8859-1" standalone="no"?> <plug-in> <!-- Plugin Informations --> <name>directory-angular</name> <class>fr.paris.lutece.portal.service.plugin.plugindefaultimplementation</class> <version>1.0.0</version> <description>module.directory.angular.module.description</description>... <core-version-dependency> <min-core-version>3.1.2</min-core-version> <max-core-version/> </core-version-dependency> <db-pool-required>0</db-pool-required> <!-- Xpage configuration --> <applications> <application> <application-id>directory-angular</application-id> <applicationclass>fr.paris.lutece.plugins.directory.modules.angular.web.directoryangularapp</applicationclass> </application> </applications> </plug-in>

LE FICHIER PLUGINS.DAT Ce fichier est situé dans WEB-INF/plugins Il contient : l état des plugins (installé/non installé) le pool de connexions à utiliser A partir de la version 4.1, ce fichier ne sert que pour l initialisation. Les données vivantes sont stockées dans le Datastore. # plugins.dat file appstore.installed=1 appstore.pool=portal document-ckan.installed=1 document.installed=1 document.pool=portal html.installed=1 jmx.installed=1 jmxtrans.installed=1 lucene.installed=1 pluginwizard.installed=1 pluginwizard.pool=portal rest.installed=1 theme.installed=1 theme.pool=portal

LES FICHIERS DE CONTEXTE (SPRING) DES PLUGINS Ces fichiers sont situés dans le répertoire WEB-INF/conf/plugins. Ils contiennent la déclaration des beans fournis par le plugin et à charger dans le contexte global. Les noms des beans doivent être préfixés par le nom du plugin suivi d un point. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="appstore.categorydao" class="fr.paris.lutece.plugins.appstore.business.categorydao" /> <bean id="appstore.applicationdao" class="fr.paris.lutece.plugins.appstore.business.applicationdao" /> <bean id="appstore.componentdao" class="fr.paris.lutece.plugins.appstore.business.componentdao" /> <bean id="appstore.icondao" class="fr.paris.lutece.plugins.appstore.business.icondao" /> </beans>

LES FICHIERS DE PROPRIETES DES PLUGINS Ces fichiers sont situés dans le répertoire WEB-INF/conf/plugins. Ils contiennent la déclaration des propriétés fournies par le plugin. Les noms des propriétés doivent être préfixés par le nom du plugin suivi d un point. # myplugin.properties myplugin.property1=value1 myplugin.property2=value2 En java, les propriétés sont accessibles via la classe AppPropertiesService private static final String PROPERTY_1 = «myplugin.property1»; String strproperty1 = AppPropertiesService.getProperty( PROPERTY_1 );

LES FICHIERS RESOURCES ET L I18N Les messages de l application et autres ressources de type chaînes de caractères doivent être rassemblées dans des fichiers de ressources. Ces fichiers sont stockés dans le répertoire fr.paris.lutece.plugins.<nom_plugin>.resources. Ces fichiers sont internationalisables (i18n) en suffixant le nom du fichier par la locale. Exemple : <nom_plugin>_messages_fr.properties <nom_plugin>_messages_en.properties Les clés i18n sont codifiées de la manière suivante : Référence de la clé Fichier Localisation portal.<nom_sous_système>.<clé> <sous_système>_messages_*.properties Noyau (core) <nom_plugin>.<clé> <nom_plugin>_messages_*.properties Plugin module. <nom_plugin>. <nom_module>.clé <nom_module>_messages_*.properties Plugin/Module

UTILISATION DES CLES I18N DANS LES TEMPLATES Les clés i18n sont à utiliser dans les templates en utilisant la forme #i18n{ référence_clé } Dont voici un exemple dans un template : <b>#i18n{myplugin.mytemplate.labelfirstname}</b> : ${person.firstname} <b>#i18n{myplugin.mytemplate.labellastname}</b> : ${person.lastname} Le fichier myplugin_messages_fr.properties contiendra les valeurs des clés : mytemplate.labelfirstname=prénom mytemplate.labellastname=nom

PLUGIN WIZARD Assistant de génération de code permettant de générer : - Le fichier projet pom.xml - Les fichiers de configuration (xml, context, properties) - Les classes Java (Métier + DAO (crud), Admin Features, Xpages, Portlets) - Les templates HTML (Bootstrap v2) - Les fichiers resources i18n - Les scripts SQL - Le squelette de documentation xdoc (site projet généré par Maven)

PLUGIN WIZARD Les profils de générations, les générateurs et les templates de générations sont injectés en Spring. Il est donc possible de se fabriquer ses propres configurations pour personnaliser la génération. Il est possible de tester chaque générateur de manière unitaire grâce à des données de test (plugin de référence) et de classes Junit.

DEMO Un exemple de petite médiathèque 3 médias : Livres, CD et DVD Edition des fiches en Back Office Visualisation du catalogue en Front Office (lecture seule) Création du plugin avec PluginWizard Déploiement Modification simple de code Redéploiement

DOCUMENTATION & RESOURCES Official Web Site http://fr.lutece.paris.fr Demo Site (Nightly builds + Data reseted every 3hours) http://dev.lutece.paris.fr/site-demo Developer Site http://dev.lutece.paris.fr Wiki https://dev.lutece.paris.fr/confluence

THANK YOU KEEP IN TOUCH @LuteceNews