Cocoon. Una introduzione

Documenti analoghi
Implementazione di MVC. Gabriele Pellegrinetti

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

EXPLOit Content Management Data Base per documenti SGML/XML

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

Guida all uso delle Web View su ios

J2EE (o JEE): Framework Java per lo sviluppo di applicazioni WEB Enterprise, che vivono in rete e che siano accessibili attraverso browser.

Laboratorio di Basi di Dati

L o. Walter Ambu japs: una soluzione agile (

Protocollo di metadata harvesting OAI-PMH Lavoro pratico 2

Capitolo 4 Pianificazione e Sviluppo di Web Part

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

L architettura MVC (Model- View-Controller) Introduzione

Bibliografia: Utenti e sessioni

Alfa Layer S.r.l. Via Caboto, Torino ALFA PORTAL

Ambienti di Sviluppo

Laboratorio di Information Retrieval SOLR. Marco Rossetti Based on Emanuele Panzeri s slides panzeri@disco.unimib.

Architettura MVC-2: i JavaBeans

Sommario. Introduzione Architettura Client-Server. Server Web Browser Web. Architettura a Due Livelli Architettura a Tre Livelli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Application Server per sviluppare applicazioni Java Enterprise

Architettura e tecnologie per lo sviluppo del Setup-Dashboard. Setup Srl Information Technologies

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Seminario di Sistemi Distribuiti RPC su SOAP

Protocolli e architetture per WIS

Dispensa di Informatica I.1

MetaMAG METAMAG 1 IL PRODOTTO

Presentazione della tesi di laurea di Flavio Casadei Della Chiesa. Newsletter: un framework per una redazione web

19. LA PROGRAMMAZIONE LATO SERVER

Programmazione server-side: Java Servlet

Reingegnerizzazione di un Content Management System verso l accessibilità secondo la normativa italiana

GenLApp Generazione Lista di Applicazioni. Design Patterns. Classi Essenziali. Modellazione Dati. Progettazione della Linea di Prodotti

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Modulo 4: Ereditarietà, interfacce e clonazione

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Integrazione di tecnologie XML nella realizzazione di siti Web

Registratori di Cassa

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Corso Online Analista Programmatore Microsoft

Descrizione generale del sistema SGRI

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

PROGETTAZIONE E SVILUPPO DI UN. Relatore: Studente: Paolo Merialdo Valerio Barbagallo

Introduzione all Information Retrieval

Protocolli applicativi: FTP

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Strutturazione logica dei dati: i file

Gestione del workflow

Logging in Python. Linguaggi dinamici A.A. 2010/2011 1

Presentazione di Cedac Software

PROGRAMMAZIONE MODULARE DI INFORMATICA CLASSE QUINTA - INDIRIZZO MERCURIO SEZIONE TECNICO

Siti web centrati sui dati (Data-centric web applications)

XML e PHP. Gestire XML con PHP. Appendice

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Presentazione Data Base

La sintassi di un DTD si basa principalmente sulla presenza di quattro dichiarazioni:

Approccio stratificato

Programmazione Java Avanzata Spring - JDBC

Il Protocollo HTTP e la programmazione di estensioni Web

Protezione. Protezione. Protezione. Obiettivi della protezione

Introduzione ai Sistemi di Gestione di Basi di Dati XML

Comuninrete sistema integrato per la gestione di siti web ed interscambio di informazioni e servizi.

Le scelte tecnologiche di RUP System

The new VirtueMart 2. la rivoluzione del più diffuso e-commerce per Joomla

Sistema di Gestione dei Contenuti Multimediali

Una metodologia di progettazione di applicazioni web centrate sui dati

Cosa succede quando si naviga

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Tecnologie Enterprise Portal e soluzioni Open Source

Centro Nazionale per l Informatica nella Pubblica Amministrazione. Gara a procedura aperta n. 1/2007. per l appalto dei

Sviluppo Applicativi personalizzati per automatizzare le Analisi SPC

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Database. Si ringrazia Marco Bertini per le slides

Specifiche Tecnico-Funzionali

SUAP. Per gli operatori SUAP/amministratori. Per il richiedente

Applicazioni web centrati sui dati (Data-centric web applications)

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

Il Gestore Eventi di OpenSPCoop i. Il Gestore Eventi di OpenSPCoop

Il Web Server e il protocollo HTTP

Ajax è il nome nuovo introdotto dal web 2.0, ma non si tratta di un nuovo linguaggio di. Javascript and XML

Il linguaggio HTML - Parte 4

PIATTAFORMA DOCUMENTALE CRG

Componenti Web: client-side e server-side

MANUALE D USO DELLA PIATTAFORMA ITCMS

Hardware delle reti LAN

Lezione 1 Introduzione

Lifephone. Introduzione. Database. Sito

Ogni documento digitalizzato, carta attivo o passivo, viene di infatti accompagnato identità da una sorta di elettron

Il software di gestione immobiliare più facile da usare. Modulo Web v5.2.

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

Indice. Introduzione. Capitolo 1

Corso di PHP. Prerequisiti. 1 - Introduzione

lem logic enterprise manager

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

Architettura Foronet

Strumenti e linguaggi per lo sviluppo WEB su Linux. Scano Alessandro alescano@fastimap.com

CONTENT MANAGEMENT SYSTEM

Transcript:

Cocoon Una introduzione

Programma Descrizione per l' utente Funzionamento interno

Parte Prima Dal punto di vista dell'utente

Che cosa è? Cocoon è una piattaforma di pubblicazione di dati XML. Con esso è possibile a partire da sorgenti diverse, database, soap, files, costruire e gestire applicazioni web con supporto per indipendenza del browser, internazionalizzazione, localizzazione, separando la logica dalla presentazione. Si possono costruire diversi tipi di applicazioni web, da portali a data warehousing È Open Source e multipiattaforma È utilizzato da compagnie quali HP e NASA. Può integrare sorgenti dati multiple e fornire un output in diverso formato (HTML,PDF,WML,SVG)

Perché è nato? Essenzialmente per separare la logica dalla presentazione dei siti web. Con l'aumentare della complessità dei siti, la gestione di diversi tipi di browser, diventa problematica la gestione e manutenzione Il sito può essere manutenuto indipendentemente da sviluppatori e designers Parti diverse di sito si integrano agevolmente

Caratteristiche principali Pubblicazione flessibile di dati in diverso formato Integrazione di sorgenti dati diverse Personalizzazione dei contenuti Integrazione di applicazioni Indipendente dalla piattaforma Architettura flessibile Multilinguaggio (utente) Open Source Multipiattaforma

Prerequisiti JDK Servlet engine (Tomcat, Web Sphere, ecc)

Generazione documenti La logica del sito é disaccoppiata dalla struttura fisica dei documenti (maggiore manutenibilità) Un documento é il risultato di un processo di generazione dati e trasformazione Il documento viene prodotto da una pipeline, cioè una serie di componenti che si trasmettono e trasformano XML.

Le pipelines I dati partono da un generatore Passano tra uno o più transformers Vengono pubblicati grazie ad un serializer Nella mappa del sito vi sono le informazioni per gestire il tutto Tutto quanto in formato XML

La configurazione La configurazione del sito é in sitemap.xmap. In essa sono dichiarati i componenti, le risorse e le pipelines <map:pipeline> <map:match pattern="helloworld.html"> <map:generate src="hw.xsp" type="serverpages"/> <map:serialize type="xml"/> </map:match> </map:pipeline>

I componenti Contenuti in sitemap Components Generators Transofrmers Serializers Readers Selectors Matchers Actions

La pipeline I generators creano i dati I transformers (opzionali) li trasformano, e li completano I'URL del documento passa al vaglio di un matcher che determina quale pipeline deve processarlo. La pipeline determina la catena di processing del documento <map:match pattern="todo.xml"> <map:mount uri-prefix="" src="status.xmap" check-reload="yes" /> </map:match>

La pipeline (2) Ogni componente ha un nome univoco ed un src (classe Java). Per ogni tipo di componente esiste un default Le risorse sono definite da URI e contengono dati, immagini, pagine statiche. Per leggerle si usano protocollo standard (http:) e privati (cocoon: e utente)

Componenti comuni Tra i componenti comuni citiamo File generator, html generator, directory generator, request (crea un XML con i parametri della richiesta) XSLT transformer. I componenti possono essere estesi in Java implementando determinate interfacce.

Actions Eseguono un compito specifico, non producono dati e non li processano. Es.: aggiungere un utente ad un database Ritornano una serie di coppie chiave-valore

I Matchers Nei matchers posso usare i parametri della richiesta con sostituzioni <map:match pattern="**body-*.html"> <map:select type="exists"> <map:when test="content/xdocs/{1}{2}.ehtml"> <map:generate src="content/xdocs/{1}{2}.ehtml" /> <map:transform src="resources/stylesheets/html2htmlbody.xsl" /> <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/> <map:serialize type="xml" /> </map:when> </map:select> </map:match>

XSLT I transformers usano XML, quindi c'è un largo uso di XSLT

Flusso Se c'è un match ne viene eseguito il contenuto, se si sono actions, vengono eseguite; se ritornano un oggetto, viene eseguito ciò che sta al loro interno. Ogni pipeline può avere un proprio error handler

Selectors Lo posso usare per testare parametri della richiesta o valori generati da un atto È paragonabile ad una istruzione switch del linguaggio C <map:match pattern="**body-*.html"> <map:select type="exists"> <map:when test="content/xdocs/{1}{2}.ehtml"> <map:generate src="content/xdocs/{1}{2}.ehtml" /> <map:transform src="resources/stylesheets/html2htmlbody.xsl" /> <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/> <map:serialize type="xml" /> </map:when> </map:select> </map:match>

Aggregazione Posso unire diverse parti di pipelines con sorgenti dati diverse per facilitare la gestione del sito <map:match pattern="*.html"> <map:aggregate element="site"> <map:part src="cocoon:/tab-{0}"/> <map:part src="cocoon:/menu-{0}"/> <map:part src="cocoon:/body-{0}"/> </map:aggregate> <map:call resource="skinit"> <map:parameter name="type" value="site2xhtml"/> <map:parameter name="path" value="{0}"/> </map:call> </map:match>

Content aggregation Posso generare le parti in modo indipendente e riunirle Posso accedere alle diverse parti per eventualmente trasformarle in altri formati (PDF) senza dovere esaminare il documento completo ed estrarre informazioni in modo complicato ed inaffidabile

Redirectors Posso ridirigere una richiesta all'interno o all'esterno

Actionset Insieme di azioni: posso decidere di chiamarle tutte o solo qualcuna a seconda di un parametro della richiesta <map:action-set name="utente"> <map:act type="add-users" action="add"/> <map:act type="mod-user" action="mod"/> <map:act type="del-user" action="delete"/> </map:action-set>

Subsitemaps Posso caricare dei sottositi, ognuno con la sua configurazione in modo modulare Facilità di manutenzione e di deployement

Views Sono viste di documenti particolari ed hanno un nome, Le posso invocare con un url o in una pipeline chiamandole per nome con un attributo label. Posso usarle anche per debug per avere i dati raw del documento in XML Oppure per trasformare in altro formato il documento

<xsp:page xmlns:xsp="http://apache.org/xsp"> <xsp:logic> String messaggio="hello World"; </xsp:logic> <document> <xsp:expr>messaggio</xsp:expr> </document> </xsp:page> XSP Posso introdurre script in codice Java per modificare la logica dell'applicativo come generators Se ne abuso corro il rischio di mischiare logica con i dati

Caching Esiste un meccanismo di caching che deve essere implementato da tutti i componenti di una pipeline

Integrazione Posso integrare attraverso miei componenti con SOAP apptraerso il SOAP logicsheet, parte del package di base. J2EE Lucene (motore di ricerca) Xindice (database XML)

Parte II Funzionamento interno

Struttura Servlet Engine Cocoon Componenti Cocoon: Generator, Transformer Standard: XML parser, ecc Avalon Utente Logging Management

Architettura di Cocoon Applicazione LogicSheets Componenti Core Avalon

Le basi Cocoon è basato su Avalon, un framework per la gestione di componenti. Avalon gestisce il pooling degli oggetti e mette a disposizione componenti di base come il logger. Definisce interfacce di base per la gestione di componenti riusabili. Excalibur è basato su Avalon ed implementa diversi componenti di cui in Avalon è definita l'interfaccia. Avalon e' basato sui ruoli che hanno metodi definiti (interfacce) ed è basato sui patterns IoC e SoC

Patterns IoC e SoC Inversion of Control Il sw che crea il componente è responsabile della sua configurazione Separation of Concerns Il componente è responsabile di un solo compito.

Customizzazione È possbile registrare diversi tipi di componenti (anche utente) ed attribuire loro un ruolo via file di configurazione. Es.: parser XML Vi sono interfacce per gestire il ciclo di vita (pooling) ed il tipo di threading model Tramite le interfacce possiamo creare nostri componenti per implementare funzionalità mancanti od implementare nuovi protocolli

Bibliografia Cocoon: Building XML Applications, New Riders Cocoon Developer's handbook SAMS

Links 1 Cocoon http://xml.apache.org/cocoon http://xml.apache.org/cocoon/faq.html Progetti Apache http://jakarta.apache.org/avalon http://xml.apache.org/xindice http://xml.apache.org/xalan-j/index.html http://xml.apache.org/xerces-j/index.html http://xml.apache.org/fop/index.html http://xml.apache.org/batik/index.html

Links 2 W3C http://www.w3.org/xml XML reference http://www.w3.org/tr/xslt XSLT reference http://www.w3.org/tr/xpath XPATH http://www.w3.org/graphics/svg

Fine