ANTOINE CHEVERT , PASCAL LAMY

Slides:



Advertisements
Présentations similaires
Présentation de frameworks J2EE
Advertisements

Le struts validator – framework de validation
Architecture Technique de la plate-forme CASTORE
Cycle de vie de documents web
FragmentsManuelle : XML Publication et Fragments La publication de canaux Processus de mise à disposition de nouveaux contenus extérieurs au portail :
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
Conception de Site Webs dynamiques Cours 6
Transformation de documents XML
Serveurs web pour JSP et Servlets
Une solution personnalisable et extensible
INTRODUCTION INTRODUCTION ERGONOMIE Tri par cartes Formulaires Interface Installation Lanceur Documentation TECHNOLOGIES XML + XSL CSS Formulaires génériques.
Exposé de Système - Informatique et Réseau
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -
le langage les éléments
SVG: Scalable Vector Graphics Exemple: Vienne Christine Potier, INF347, 20 juin 2008.
Domaines nominaux XSLT
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
TP 3-4 BD21.
Manipulation d’XML avec XSL
La configuration Apache 2.2 Lhébergement virtuel.
Projet J2EE Maverick XMLBeans Garcel Jean-Baptiste – Le Loc Martin – Muller Thibaut.
XSL-FO THEORIE PRATIQUE.
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
2006/2007Denis Cabasson – Programmation Web Cours de programmation web ENSAE
Applications Chapitre B17 et C18
Archimède : dépôt institutionnel de la Bibliothèque de lUniversité Laval Par Rida Benjelloun Chef de la section recherche.
Développement Rapide dApplications Web avec.NET « Mon premier site »
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Les instructions PHP pour l'accès à une base de données MySql
Services fournis par le SI et technologies associées
Notions sur le XML Réfs : manuel p 149. Introduction Le XML (eXtensible Markup Language) est un standard d'échange de données. Il fait partie comme le.
XSLT Langage de transformation darbre par Yves Bekkers.
Création d'un projet Web avec Netbeans
© Glaus & Ruckstuhl TECFA Le Processeur Apache / FOP.
Installation des programmes
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Projet de Master première année 2007 / 2008
Adaptée du cours de Richard Grin
Support des connaissances TP2 XSL-T
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
PHP & My SQL.
Programmation Internet en PHP SIL module M12
Module I-C3 : Applications Web IUT R&T 2e année
Présentation du produit
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
S'initier au HTML et aux feuilles de style CSS Cours 5.
SMIL Synchronized Multimedia Integration Language
Campus-Booster ID : **XXXXX Copyright © SUPINFO. All rights reserved Le développement Web.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Struts.
Introduction au socle MEAN
S'initier au HTML et aux feuilles de style CSS Cours 5.
 Formulaires HTML : traiter les entrées utilisateur
Cours MIAGE « Architectures Orientées Services »Henry Boccon-GibodCours MIAGE « Architectures Orientées Services »Henry Boccon-Gibod 1 Architectures Orientées.
Initiation au JavaScript
Présentation ESTRABOX
Centralisation des sites web d’ELTA & Mise en place d’un serveur NAS
Page 1 © Expert-IT s.a. - Développer des projets en XML Pratique.
EPREUVE E6 : PARCOURS DE PROFESSIONNALISATION
Introduction à SVG Scalable Vector Graphic. Informations ● Plus d'informations ici (draft, tutoriaux, outils... ): –
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Objectifs du développement Des agendas culturels et services quotidiens de La Libre Belgique et de La Dernière Heure et proposera des services d’informations.
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
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.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
Transcription de la présentation:

ANTOINE CHEVERT , PASCAL LAMY COCOON ANTOINE CHEVERT , PASCAL LAMY

PLAN Présentation Les intérêts de cocoon Fonctionnement de Cocoon Historique Introduction Installation Les intérêts de cocoon Fonctionnement de Cocoon Base de donnée

Historique Cocoon 1 Cocoon 2 Initié en Janvier 1999 par Stefano Mazzocchi Associé au groupe Apache Basé sur l’API d’accès XML : DOM Cocoon 2 Sorti en Novembre 2001 Accès XML avec l’API SAX Centralisation des fonctions de management Supporte la pré compilation et la mise en cache

Introduction Framework de publication Web Interaction avec de nombreuses sources de données (systèmes de fichier, bases de données relationnelles, LDAP, bases de données XML, etc.) Génération à partir de documents XML via le déclenchement d'évènements SAX, des contenus sous des formats variés (HTML, WML, PDF, SVG ,RTF). Permet de séparer : La gestion Le contenu La logique La présentation

Installation Fonctionne sous Windows/Linux JDK pré-installé et JAVA_HOME déclarée COCOON est couramment associé au serveur d’application Apache TomCat ou Jetty 2.0.X avec Tomcat et jdk >= 1.2.2 Copie du fichier COCOON.WAR (Web Archive) Déploiement dans TomCat par simple copie. 2.1.4 avec le jdk >= 1.3 Version contenant d’origine le serveur d’application Jetty. Compilation avec ant

Les Intérêts de cocoon Génération de différents formats de sortie Le modèle « pyramidal des contrats Web» Le langage XSP Un exemple

Format d’Entrée - Format de sortie Word/EXCEL (Projet POI) XML JPG/ PNG RTF/TXT PDF/PS/PCL SGBD WML HTML APPLICATION SERVEUR XML LDAP

Le modèle « pyramidal contrats Web » Concept de séparation des taches Facilite la réutilisation du code

Le langage XSP XSP : eXtensible Server Page XSP est un document XML avec du code java imbriqué Le document XSP est compilé et exécuté avant de retourner le résultat Ce qui donne un document XML intermédiaire dans lequel les instructions java ont été remplacées par leur résultat,au format XML. Ce document XML intermédiaire est soumis a nouveau à un processus de Transformation,avec un programme XSLT, afin que le résultat produit(HTML,WML,PDF…)soit transmis au programme client.

Un exemple <xsp:page language="java" xmlns:xsp="http://apache.org/xsp"> <document> <xsp:logic> SimpleDateFormat format = new SimpleDateFormat("EEE, MMM d, yyyy"); String timestamp = format.format( java.util.Calendar.getInstance().getTime()); </xsp:logic> <time><xsp:expr>timestamp</xsp:expr></time> <!-- additional elements --> </document> </xsp:page>

Fonctionnement de Cocoon Architecture client serveur Mécanisme de Production Qu’est ce qu’un Pipeline Exemple de Pipeline Définition du fichier d’annuaire : sitemap.xmap Sitemap de l’application web Composant Cocoon Exemple d’application web

Architecture client-serveur TOMCAT / JETTY HTTP 8080 COCOON Données Sérialisation Transformation Génération

Mécanisme de Production 1 CLIENT TOMCAT 2 6 COCOON DOC XML 5 3a DOC HTML DOC WML DOC PDF 4 INTERPRETEUR XSP INTERPRETEUR XSLT 3b INTERPRETEUR FOP 4

« PIPELINE » Fichier XSLT XSLT Processor Fichier HTML Fichier XML Sérialisation Transformation Génération

Exemple de pipeline <map:match pattern= "hello "> Requête ( matcheur ) <map:match pattern= "hello "> <map:generate src="source.xml"/> <map:transform src="transform.xsl"/> <map:serialize type="HTML"/> </map:match> Génération Transformation (feuille de style) Sérialisation (Format de sortie)

SITEMAP.XMAP Annuaire des applications web Les sitemap Cocoon peuvent servir à plusieurs choses, en particulier la définition de composantes et une partie de la logique applicative. Les sitemap servent à déterminer, en fonction de l'URL d'appel, quel producteur, quel transformateur et quel sérialiseur utiliser. Matcher : extrait de l’URL les requêtes Generator : emplacement de la donnée source (fichier, requête) Transformer : règles de transformation (xslt) Serializer : format de sortie (html, pdf, xml… Ces informations sont spécifiées à l'aide de pipelines .

SITEMAP.XMAP suite Il est possible de référencer une application web autrement que par le sitemap principal. Il s’agit de créer un fichier sitemap.xmap dans le répertoire de l’application. Il suffit de relier ensuite le sitemap principal au sitemap de l’application.

Composant Cocoon A l'heure actuelle, plus de 70 à 80 composants sont présents dans la version cocoon 2.1. GeneratorDirectoryGenerator : convertit la liste des fichiers d'un répertoire en format XML duquel sont produits des événements SAXGenerator FileGenerator: Parse un fichier ou une URI et produit des événements SAXGenerator JSPGenerator : génère du XML et des événements SAX à partir d'une page JSPGenerator ServerPagesGenerator génère du XML et des événements SAX à partir d'une page XSP Transformer XSLTransformer Transforme des évènements SAX d'après une définition XSLTSerializer HTMLSerializer Produit de l'HTML d'après du SAXSerializer PDFSerializer Produit du PDF d'après du SAX (utilisant Apache Formatting Output Processor (FOP)) Serializer SVG2JPGSerializer Produit un JPEG d'après des évènements SVG SAX events (utilisant Apache Batik)

Exemple d’application web Fichier XML:toto.xml Fichier XSLT:toto.xsl Fichier sitemap.xmap Le fichier toto.xml sera transformé en fichier HTML

Fichier toto.xml <?xml version="1.0"?> <page> <titre>Comment tu vas mon canard!</titre> <para>premiere application web</para> </page>

Fichier toto.xsl Récupération de la valeur titre du document toto.xml <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="page"> <html> <head> <title> <xsl:value-of select="titre"/> </title> </head> <body bgcolor="white"> <xsl:apply-templates select="para" /> </body> </html> </xsl:template> <xsl:template match="para"> <H1><xsl:apply-templates/></H1> </xsl:stylesheet> Récupération de la valeur titre du document toto.xml Application de la règle para Récupération de la valeur para du document toto.xml

Sitemap de l’application web <?xml version="1.0"?> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> <map:pipelines> <map:pipeline> <map:match pattern="toto"> <map:generate src="toto.xml"/> <map:transform src="toto.xsl"/> <map:serialize type="html"/> </map:match> </map:pipeline> </map:pipelines> </map:sitemap>

Base de donnée Fichier de configuration Cocoon.xconf Comment configurer une base de donnée Comment accéder à une base de donnée avec XSLT avec XSP

COCOON.XCONF C’est le fichier de configuration de cocoon Il gère Les paramètres de cache Paramètre de rechargement sitemap Paramètre de base de données Extension utilisée pour xsp Gestion des Threads Etc …

Pour accéder à une base de données Copier le driver dans la librairie de cocoon et le déclarer simplement dans web.xml Déclarer la base de données dans cocoon.xconf comme suit :

Exemple de déclaration d’une base de données dans cocoon.xconf <jdbc name=« monPool »> <pool-controller min=« 5 » max=« 10 »/> <dburl>jdbc:mysql://localhost/maBase</dburl> <user>root</user> <password></password> </jdbc>

Exemple d’application web en xslt avec connexion à la base de données Fichier XML:sqlexemple.xml Fichier XSLT:sqlexemple.xsl Pipeline correspondant au sitemap.xmap

Fichier sqlexemple.xml Affichage des titres des colonnes <?xml version="1.0"?> <document> <col1>ressources</col1> <col2>descriptif</col2> <sql:execute-query xmlns:sql="http://apache.org/cocoon/SQL/2.0"> <sql:use-connection>pool1</sql:use-connection> <sql:query> select nom,descriptif from session </sql:query> </sql:execute-query> </document> Appel de la bibliothèque sql Sélection du pool de connexions défini dans cocoon.xconf

Fichier sqlexemple.xsl <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sql="http://apache.org/cocoon/SQL/2.0"> <xsl:template match="document"> <html> <body bgcolor="#FFFFFF"> <center><table width="75%" border="0"> <tr> <td bgcolor="#CC0033" align="center"><font color="#FFFFFF"><xsl:value-of select="col1"/></font></td> <td bgcolor="#CC0033" align="center"><font color="#FFFFFF"><xsl:value-of select="col2"/></font></td> </tr> <xsl:apply-templates select="sql:rowset/sql:row"/> </table> </center> </body> </html> </xsl:template> <xsl:template match="sql:row"> <tr><xsl:apply-templates/></tr> <xsl:template match="sql:nom|sql:descriptif"> <td bgcolor="#0066CC"><font color="#FFFFFF"> <xsl:value-of select="."/></font> </td> </xsl:stylesheet> Règle sql:row qui passe à la ligne suivante Règle sql:rowset qui affiche le résultat de la requête SQL

Pipeline défini dans le sitemap.xmap <map:pipeline> <map:match pattern="requete"> <map:generate src="sqlexemple.xml"/> <map:transform type="sql"> <map:parameter name="use-connection" value="Pool1"/> </map:transform> <map:transform src="sqlexemple.xsl"/> <map:serialize/> </map:match> </map:pipeline> Définition du pool de connexion référencé dans le cocoon.xconf

XSP 1 Solution concurrente au serveur page mais version xml Se place AVANT les transformations en html ou pdf, au niveau des fichiers xml dans le pipe

XSP 2 Les balises à préfixe xsp ne seront pas visibles dans le code xml généré Le code java est inclus dans le xml sous forme de logicsheet que l’on doit déclarer dans l’entête de la page

Exemple valid.xsp Déclaration des logicsheets utilisées Pool utilisé <?xml version="1.0" encoding="ISO-8859-1"?> <xsp:page language="java" xmlns:xsp="http://apache.org/xsp" xmlns:esql="http://apache.org/cocoon/SQL/v2" xmlns:xsp-request="http://apache.org/xsp/request/2.0> <page><esql:connection><esql:pool>monPool</esql:pool> <esql:query>select nom_prenom from copain where '<xsp-request:get-parameter name="idlogin"/>' = nom_prenom and '<xsp-request:get-parameter name="idpassword"/>' = description</esql:query> <esql:results>vous existez bien dans la base</esql:results> <esql:no-results>vous n'etes pas identifiés dans la base !!!</esql:no-results> <esql:error-results>error</esql:error-results> </esql:execute-query> </esql:connection> </page> </xsp:page> Déclaration des logicsheets utilisées Pool utilisé Requête & paramètre Affichage des résultats

Utilisation balise <esql:../> valid.xsp <?xml version="1.0" encoding="ISO-8859-1"?> <xsp:page language="java" xmlns:xsp="http://apache.org/xsp" xmlns:esql="http://apache.org/cocoon/SQL/v2" xmlns:xsp-request="http://apache.org/xsp/request/2.0" > <page><esql:connection><esql:pool>monPool</esql:pool> <esql:query>select nom_prenom from copain where '<xsp-request:get-parameter name="idlogin"/>' = nom_prenom and '<xsp-request:get-parameter name="idpassword"/>' = description</esql:query> <esql:results>vous existez bien dans la base</esql:results> <esql:no-results>vous n'etes pas identifiés dans la base !!!</esql:no-results> <esql:error-results>error</esql:error-results> </esql:execute-query> </esql:connection> </page> </xsp:page> Déclaration des logicsheet utilisées Pool utilisé Requête &paramètre Affichage des résultats

Utilisation d'un code java <xsp:page language="java" xmlns:xsp="http://apache.org/xsp"> <elements> <xsp:logic> { for (int i=1; i<11; i++) { <element><xsp:expr>i</xsp:expr></element> } } </xsp:logic> </elements> </xsp:page>

Les Actions Utilisés au niveau du SITEMAP.XMAP Notion de dérivation du Pipe Code livré avec COCOON, fiable et natif Plusieures formes d'action prises en charge par cocoon : ActionDatabase ActionForm(dérivé de Struts) Action redirect-to Etc...

Code source minimale d'action public abstract class AbstractAction extendsAbstractLogEnabled implements Action { protected static final Map EMPTY_MAP = Collections.unmodifiableMap(new TreeMap()); }

Que supporte Cocoon? Toutes les bases de données du moment qu’il y a un driver en java Java, JavaScript, jsp, ejb, Perl Technologie Struts pré installé en 2.1 pour se mettre en accord avec le w3c pour la validation des formulaires html Possibilité d’étendre les fonctionnalités de cocoon en ajoutant des briques d’Avalon

Difficultés rencontrées Aucune éditeur graphique Compréhension des actions Documentations insuffisantes ou obsolètes en anglais DEBUG Syntaxe Compilation 2.1.X sous linux

Conclusion Outil de publication puissant Connaissance du monde XML indispensable Intéressant pour des sites multi-plateformes

En savoir plus Cocoon : Building XML Application Éditeur : New Riders Cocoon 2 Programming Éditeur: Sybex http://cocoon.apache.org/ http://www.planetxml.com http://Wiki.cocoon.dev.org http://cortes.cnam.fr:8080

LE PROJET

Architecture du Projet NET SGBD Cocoon Agent de capture

Réalisation du Projet Agent de capture réalisé en Perl Base de données Mysql JDK 1.3 Serveur Tomcat 3.02 Cocoon 2.0