La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

ANTOINE CHEVERT , PASCAL LAMY

Présentations similaires


Présentation au sujet: "ANTOINE CHEVERT , PASCAL LAMY"— Transcription de la présentation:

1 ANTOINE CHEVERT , PASCAL LAMY
COCOON ANTOINE CHEVERT , PASCAL LAMY

2 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

3 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

4 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

5 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

6 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

7 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

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

9 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.

10 Un exemple <xsp:page language="java"
xmlns: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>

11 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

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

13 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

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

15 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)

16 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 .

17 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.

18 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)

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

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

21 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=" <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

22 Sitemap de l’application web
<?xml version="1.0"?> <map:sitemap xmlns:map=" <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>

23 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

24 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 …

25 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 :

26 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>

27 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

28 Fichier sqlexemple.xml
Affichage des titres des colonnes <?xml version="1.0"?> <document> <col1>ressources</col1> <col2>descriptif</col2> <sql:execute-query xmlns:sql=" <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

29 Fichier sqlexemple.xsl
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl=" xmlns:sql=" <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

30 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

31 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

32 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

33 Exemple valid.xsp Déclaration des logicsheets utilisées Pool utilisé
<?xml version="1.0" encoding="ISO "?> <xsp:page language="java" xmlns:xsp=" xmlns:esql=" xmlns:xsp-request=" <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

34 Utilisation balise <esql:../> valid.xsp
<?xml version="1.0" encoding="ISO "?> <xsp:page language="java" xmlns:xsp=" xmlns:esql=" xmlns:xsp-request=" > <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

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

36 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...

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

38 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

39 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

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

41 En savoir plus Cocoon : Building XML Application Éditeur : New Riders
Cocoon 2 Programming Éditeur: Sybex

42 LE PROJET

43 Architecture du Projet
NET SGBD Cocoon Agent de capture

44 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


Télécharger ppt "ANTOINE CHEVERT , PASCAL LAMY"

Présentations similaires


Annonces Google