Stefan Metzlaff1 Cocoon Stefan Metzlaff
Stefan Metzlaff2 Gliederung Geschichte Was ist Cocoon? Cocoon 1 vs. Cocoon 2 Sitemap und Komponenten XSP Fazit Quellen
Stefan Metzlaff3 Geschichte Jan als Servlet zur Darstellung für XML Dateien von Stefano Mazzocchi Nov Freigabe von Cocoon 2 als Teil des Apache XML Projekts z.Z. ca. 20 Kernentwicklern und unzähligen Nutzern
Stefan Metzlaff4 Was ist Cocoon (1) XML Publishing Framework Dynamische Visualisierung von Daten in verschiedenen Formaten –HTML –PDF –SVG
Stefan Metzlaff5 Was ist Cocoon (2) Servlet innerhalb eines Applikationsserver Trennung von Logik, Daten und Präsentation Pipeline - XML - XSL
Stefan Metzlaff6 Cocoon 1 basiert auf DOM –Aufbauen eines kompletten Baumes für jedes Dokument vor der Verarbeitung –schlechte Performance –hohe Speicherverbrauch nutzt Reactor Pattern –Ablauf der einzelnen Funktionen durch Processing Instructions innerhalb der XML-Datendatei bestimmt –Schwierigkeiten mit hoch dynamischen Dokumenten
Stefan Metzlaff7 Cocoon 2 Verwendung von SAX –Verarbeitung der Daten als XML SAX-Stream –ermöglicht Verarbeitung sehr großer Dokumente Sitemap Konzept –Funktionen und deren Komponenten werden in der globalen Sitemap beschrieben –Funktionen bestehen aus einer Kette von Komponenten (Pipeline)
Stefan Metzlaff8 Pipeline Einfache Pipeline Besteht aus Generator, Transformer und Serializer SAX sample1.html sample1.xsl sample1.xml GeneratorTransformerSerializer
Stefan Metzlaff9 Sitemap (1) XML Datei sitemap.xmap Deklariert Komponenten Definiert Funktionen Zuordnung von Anfragen zu Pipelines Erlaubt es Nichtprogrammierern Webseiten und Webapplikationen mittels XML und logischen Komponenten zu erstellen
Stefan Metzlaff10 Sitemap (2) Cocoon enthält viele vordefinierte Komponenten Komponenten werden im Bausteinprinzip zu Pipelines zusammengefügt Eigene Komponenten können ohne Modifikation von Cocoon integriert werden Komponentenimplementierungen sind Java- Klassen
Stefan Metzlaff11 Sitemap (3) Direkte Komponenten –unmittelbaren Einfluss auf XML-Stream –Generator, Transformer, Serializer und Reader Indirekte Komponenten –keinen Einfluss auf den XML-Stream –Matcher, Selector und Action
Stefan Metzlaff12 Sitemap (4)
Stefan Metzlaff13 Sitemap (5) Aus MatthewLangham - Introduction To Cocoon
Stefan Metzlaff14 Generator (1) Erste Komponente in einer Pipeline Erzeugt XML Stream Nutzen Cache zur Performancesteigerung Typen von Generatoren –Datei Generator –Verzeichnis Generator –XSP Generator –JSP Generator –...
Stefan Metzlaff15 Generator (2) Deklaration von Generatoren: <map:generator name="file" src="org.apache.cocoon.generation.FileGenerator" label="content"/>...
Stefan Metzlaff16 Generator (2) Beispiel in der Pipeline: SAX sample1.html sample1.xsl sample1.xml GeneratorTransformerSerializer
Stefan Metzlaff17 Transformer (1) Eingabe und Ausgabe ist XML Stream Transformer verändert XML Struktur Meist direkt nach Generator in Pipeline Typen: –XSLT Transformer –LOG Transformer –SQL Transformer –I18N Transformer –...
Stefan Metzlaff18 Transformer (2) Deklaration von Transformern: false...
Stefan Metzlaff19 Transformer (3) Beispiel in der Pipeline: SAX sample1.html sample1.xsl sample1.xml GeneratorTransformerSerializer
Stefan Metzlaff20 Serializer (1) Umwandlung von XML Stream in ein anwendungsspezifisches Format Letzte Komponente der Pipeline Typen: –HTML Serializer –FOP Serializer –Text Serializer –XML Serializer –...
Stefan Metzlaff21 Serializer (2) Deklaration von Serializern:...
Stefan Metzlaff22 Serializer (3) Beispiel in der Pipeline: SAX sample1.html sample1.xsl sample1.xml GeneratorTransformerSerializer
Stefan Metzlaff23 Reader (1) Übermittelt Dokumente direkt, ohne XML Streams, an den Client Start und gleichzeitig Endpunkt einer Pipeline z.B. für Bilder, Binaries und CSS
Stefan Metzlaff24 Reader (2) Deklaration:... <map:reader name="image" src="org.apache.cocoon.reading.ImageReader" logger="sitemap.reader.image" pool-max="32" pool-min="1" pool-grow="4"/>... Beispiel: <map:read type="image" src="resources/images/{1}.jpg" mime-type="image/jpeg">
Stefan Metzlaff25 Matcher (1) Ordnet eine URI zu einem Pattern zu, um der Anfrage eine Pipeline zu zuordnen Ermöglichen Verarbeitung in einer Pipeline für Gruppen von URIs Typen: –Wildcard Matcher –Regexp Matcher –Weitere eigene Matcher möglich
Stefan Metzlaff26 Matcher (2) Deklaration von Matchern:
Stefan Metzlaff27 Matcher (3) Beispiel:
Stefan Metzlaff28 Selector (1) Zur Abbildung von Basislogik innerhalb der Sitemap Ähnlich zu Matcher Im Gegensatz zu Matcher nicht nur ja/nein sondern Multiple-Choice Abfragen möglich Typen: –BrowserSelector –ParameterSelector –HostSelector –...
Stefan Metzlaff29 Selector (2) Deklaration von Selectoren:
Stefan Metzlaff30 Selector (3) Beispiel:......
Stefan Metzlaff31 Action In Sitemap definierte spezielle Java Klassen Verändern nicht den XML Stream sondern setzen Parameter für die Pipeline z.B. für Logins verwendet
Stefan Metzlaff32 XSP eXtensible Server Pages Ermöglichen dynamische XML Erzeugung auf Generatorebene Programmierung im XML, durch Logic-Sheets Integration von Java Code Nicht sehr übersichtlich Schwierig zu debuggen
Stefan Metzlaff33 Komplexe Pipeline sample2.xml GeneratorTransformerSerializer formatier.xsl html-out.xsl SQL Transformer XSLSOAPXSL DB sample2.html
Stefan Metzlaff34 Fazit Vorteile –Basiert auf Java und XML (plattformunabhängig) –Modular & Erweiterbar –Open Source Nachteile –Lange Einarbeitungszeit, um alle Features nutzen zu können –Performance
Stefan Metzlaff35 Quellen Quellen –The Apache Cocoon Project, –XML.COM, - Getting Started With Cocoon 2, Steve Punte –IX 3/2004: Cocoon 2.1: XML als HTML oder PDF dynamisch darstellen, S.: –Das Apache XML Projekt, Seminarvortag von Markus Minnameier, –XML Framework: Cocoon, Seminar: XML für Fortgeschrittene, Katrin Apel –Publishing mit freier Apache-Software, COMPUTERWOCHE Nr. 06 vom –Introduction To Cocoon, Matthew Langham Download –
Stefan Metzlaff36 Fragen ?!?