Cocoon. Cocoon. http://cocoon.apache.org/ (alain.bouju@univ-lr.fr) (http://perso.univ-lr.fr/abouju)



Documents pareils
Apache Cocoon Framework d'applications XML Sylvain Wallez Anyware Technologies

Master d Informatique Corrigé du partiel novembre 2010

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Server-side XML. PAS FINI... mais ok pour un début. Originaux. Auteurs et version. Prérequis: Java de base, servlets, GUI et XML

Développement Logiciel

Programmation des Applications Réparties. Parsers XML DOM et SAX

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

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Web Tier : déploiement de servlets

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

CQP Développeur Nouvelles Technologies (DNT)

4. SERVICES WEB REST 46

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)

Architecture Orientée Service, JSON et API REST

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

JavaServer Pages (JSP)

Mise en œuvre des serveurs d application

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)

Remote Method Invocation (RMI)

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

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

Architectures Web Services RESTful

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

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

PHP 5.4 Développez un site web dynamique et interactif

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

Formation en Logiciels Libres. Fiche d inscription

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

BASE DE DONNÉES XML NATIVE

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

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

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

OpenPaaS Le réseau social d'entreprise

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Catalogue des Formations Techniques

Documentation CAS à destination des éditeurs

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

Livre Blanc WebSphere Transcoding Publisher

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

RMI le langage Java XII-1 JMF

Application web de gestion de comptes en banques

Tutoriel d installation de Hibernate avec Eclipse

Programmation par composants (1/3) Programmation par composants (2/3)

A. Architecture du serveur Tomcat 6

Auto-évaluation Programmation en Java

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Synchro et Threads Java TM

Application Web et J2EE

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

Bases Java - Eclipse / Netbeans

Projet Java EE Approfondi

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

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Aspects techniques : guide d interfaçage SSO

Utilisation de Jakarta Tomcat

Hébergement de sites Web

2 Chapitre 1 Introduction

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

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

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Programmation Objet Java Correction

Formation : WEbMaster

Ingénieur Développement Nouvelles Technologies

Introduction aux «Services Web»

From supply chain to demand chain

Java pour le Web. Cours Java - F. Michel

Projet gestion d'objets dupliqués

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

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

MapReduce et Hadoop. Alexandre Denis Inria Bordeaux Sud-Ouest France ENSEIRB PG306

Curriculum Vitae de Michel Casabianca

TP1 : Initiation à Java et Eclipse

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Composants Logiciels. Le modèle de composant de CORBA. Plan

Architectures web/bases de données

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Introduction à JDBC. Accès aux bases de données en Java

Missions réalisées. Team Leader. Scrum Master (certifié)

WebSSO, synchronisation et contrôle des accès via LDAP

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Environnements de développement (intégrés)

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Premiers Pas en Programmation Objet : les Classes et les Objets

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

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Approche Contract First

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Un ordonnanceur stupide

TD/TP PAC - Programmation n 3

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Mysql. Les requêtes préparées Prepared statements

Le stockage local de données en HTML5

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

Pratique et administration des systèmes

Transcription:

Cocoon Cocoon http://cocoon.apache.org/ (alain.bouju@univ-lr.fr) (http://perso.univ-lr.fr/abouju) 1

Cocoon Présentation Apache Cocoon est un système de développement web permettant une séparation des problèmes et un développement sous la forme de composants. Le système utilise la notion de pipeline. Dans ce pipeline chaque composant effectue une opération. 2

Cocoon Historique Historique Cocoon 1 Cocoon est un projet que Stephano Mazzocchi a débuté en Janvier 1999, le projet a commencé par un servlet permettant la transformation de contenu XML par des transformations XSL, le projet a utilisé l'api DOM. 3

Cocoon Bref historique Amélioration des performances par l'utilisation d'un parser SAX, Une organisation autour d'un fichier XML sitemap décrivant le comportement du site et l'organisation du pipeline, De meilleure performance, par pré-compilation, pré-génération et cache. 4

Cocoon Objectifs Séparation du contenu, du style et de la logique 5

Cocoon-Manipulation de données Manipulation de données Le système permet de manipuler et présenter un ensemble de type de données. 6

Cocoon - Mécanismes Mécanismes Mécanisme de bases pour des documents XMLs répartition par des "Matchers", génération de documents XML par des "Generators", transformation de documents XML pas des "Transformers", aggrégation par des "Aggregators", production du document final par des "Serializers". 7

Cocoon - Mécanismes Mécanismes 8

Cocoon - Gestion requête Gestion requête 9

Cocoon - Pipeline Pipeline 10

Cocoon - Architecture Architecture 11

Cocoon - Core-cocoon Core-cocoon mécanisme de thread, gestion contexte, mécanisme de trace (log), configuration 12

Cocoon - Components Components des composants générateurs (generator), des composants de transformation, des compossants d'association (matchers), des composants de sérialisation... 13

Cocoon - Configuration Des fichiers de configuration sitemap.xmap, xsp.xsl request.xsl, response.xsl,... 14

Cocoon - Components Components des composants générateurs (generator), des composants de transformation, des compossants d'association (matchers), des composants de sérialisation... 15

Cocoon - extensible Server Pages (XSPs) extensible Server Pages (XSPs) Une page XSP est une page XML avec les éléments suivants : La racine du document doit être <xsp:page>, Il y a la déclaration du langage comme attribut de <xsp:page>, Il doit y avoir une déclaration de "namespace" comme attribut de <xsp:page>, Pour avoir un XSP utile il faut au moins les éléments <xsp:logic> et <xsp:expr>. 16

Cocoon - extensible Server Pages (XSPs) <?xml version="1.0" encoding="iso 8859 1"?> <xsp:page language="java" xmlns:xsp="http://apache.org/xsp"> <xsp:logic> static private int counter = 0; private synchronized int count() { return counter++; } </xsp:logic> <page> <p>i have been requested <xsp:expr>count()</xsp:expr> times.</p> </page> </xsp:page> 17

Cocoon Code Java XSP package org.apache.cocoon.www.docs.samples.xsp; import java.io.file; // autres imports public class counter_xsp extends XSPGenerator { //.. Bookkeeping stuff commented out. /* User Class Declarations */ static private int counter = 0; private synchronized int count() { return counter++; } /* Generate XML data. */ public void generate() throws SAXException { this.contenthandler.startdocument(); AttributesImpl xspattr = new AttributesImpl(); this.contenthandler.startprefixmapping("xsp", "http://apache.org/xsp"); this.contenthandler.startelement("", "page", "page", xspattr); // Statements to build the XML document (Omitted) this.contenthandler.endelement("", "page", "page"); this.contenthandler.endprefixmapping("xsp"); this.contenthandler.enddocument(); } } 18

Cocoon Ecriture XSP Ecriture XSP Cas Simple le code est dans la page xml, pas de séparation entre le contenu et la logique, pour de petits exemples 19

Cocoon Architecture XSP Architecture XSP 20

Cocoon Utilisation XSLT Utilisation XSLT le code est dans une feuille de style xsl, on a une séparation entre le contenu et la logique, meilleure technique de création d'xsp. 21

Cocoon Utilisation XSLT Utilisation XSLT 22

Cocoon Sitemap <?xml version="1.0" encoding="iso 8859 1"?> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> <map:components>... </map:components> <map:views>...</map:views> <map:pipelines> <map:pipeline> <map:match>...</map:match>... </map:pipeline>... </map:pipelines>... </map:sitemap> 23

Cocoon Sitemap Le fichier sitemap contient des informations de configuration pour cocoon une liste de composants d'association (matchers), une liste de composants générateurs (generator) une liste de composants de transformation (transformers), une liste de composants de lecture (readers) une liste de composants de sérialisation (serializers) une liste de composants de choix (selectors) une liste de composants pipelines associé à des conditions (patterns)... 24

Cocoon Matcher Matcher Composant d'association Un composant essaye d'associer un URI avec des conditions (pattern) pour associer la requête à un "pipeline" de traitement. Il y a différents types de composants : composant d'association "wildcard", composant d'association "regexp", Des composants peuvent être ajoutés sans modifier Cocoon. Le composant permet d'associer un traitement spécifique pour un groupe d'uri. 25

Cocoon Matcher Matcher Composant d'association Insertion de composants d'association (matcher) dans un sitemap. <map:matchers default="wildcard"> <map:matcher name="wildcard" factory="org.apache.cocoon.matching.wildcardurimatcher"/> <map:matcher name="regexp" factory="org.apache.cocoon.matching.regexpurimatcher"/> </map:matchers> Utilisation de composants d'association pour des pipelines <map:match pattern="jsp/*"> <map:generate type="jsp" src="/docs/samples/jsp/{1}.jsp"/>... </map:match> <map:match pattern="hello.pdf"> </map:match> 26

Cocoon Generator Generator - Composant générateur Un composant générateur est utilisé pour créer une structure depuis une source d'entrée (fichier, répertoire, flux,...). Il y a différents types de composants composant "fichier", composant "répertoire", composant "XSP", composant "JSP", Des composants peuvent être ajoutés sans modifier Cocoon. 27

Cocoon Generator Generator - Composant générateur Insertion de composants générateurs (generator) dans un sitemap. <map:generators default="file"> <map:generator name="file" src="org.apache.cocoon.generation.filegenerator" label="content"/> <map:generator name="directory" src="org.apache.cocoon.generation.directorygenerator" label="content"/> <map:generator name="serverpages" src="org.apache.cocoon.generation.serverpagesgenerator" label="content"/>... </map:generators> 28

Cocoon Transformer Transformer - Composant de transformation Un composant de transformation permet de passer d'un flux XML vers un autre, Il y a différents types de composants composant "XSLT", composant "Log", composant "SQL", composant "I18N",... Des composants peuvent être ajoutés sans modifier Cocoon. 29

Cocoon Transformer Transformer - Composant de transformation Insertion de composant de transformation (Transformer) dans un sitemap. <map:match pattern="hello.html"> <map:generate src="docs/samples/hello page.xml"/> <map:transform src="stylesheets/page/simple page2html.xsl"/> <map:serialize type="html"/> </map:match> Un composant simple de transformation XSL. 30

Cocoon Serializer Serializer - Composant de «sérialisation» Un composant de sérialisation est utilisé pour transformer un format d'entré XML en un autre format (pas nécessairement XML). Il y a différents types de composants composant "HTML", composant "FOP", composant "Text", composant "XML",... Des composants peuvent être ajoutés sans modifier Cocoon. 31

Cocoon Serializer Serializer - Composant de «sérialisation» Insertion de composants de sérialisation (Serializer) dans un sitemap. <map:serializers default="html"> <map:serializer name="xml" mime type="text/xml" src="org.apache.cocoon.serialization.xmlserializer"/> <map:serializer name="html" mime type="text/html" src="org.apache.cocoon.serialization.htmlserializer"/> <map:serializer name="fo2pdf" mime type="application/pdf" src="org.apache.cocoon.serialization.fopserializer"/> <map:serializer name="vrml" mime type="model/vrml" src="org.apache.cocoon.serialization.textserializer"/>... </map:serializers> 32

Cocoon Serializer Serializer - Composant de «sérialisation» Insertion d'un composant de sérialisation (Serializer) dans un pipeline. <map:match pattern="hello.html"> <map:generate src="docs/samples/hello page.xml"/> <map:transform src="stylesheets/page/simple page2html.xsl"/> <map:serialize type="html"/> </map:match> 33

Cocoon Pipeline Pipeline Le fichier de configuration sitemap permet de mettre en place des "pipelines" composés de composants de génération, de transformation, de sérialisation,... Les requêtes sont réparties en fonction d'association (URI,...) avec les pipelines. Le pipeline est réalisé à partir du fichier sitemap.xmap 34

Cocoon Pipeline Pipeline 35