Cocoon

Definition

  • Cocoon ist ein Web-Publishing Framework der Apache Foundation
  • Aufbau als Java-basierte Lösung mit Konzentration auf XML als Content Format
  • Läuft häufig als Servlet
  • Dient häufig als Container für andere Technologien

Funktionsweise

Funktionsweise Cocoon

  • Wie bei einem Servlet schickt der Browser einen HTTP-Request (Anfrage) an einen Webserver
  • Dieser erkennt, dass der Request an Cocoon weitergeleitet werden soll
  • Das Ergebnis wird dann über z.B. Tomcat an den Browser zurückgeschickt

Bestandteile

Sitemap

  • Ist das Herz von Cocoon und dessen Konfigurationsdatei → definiert die Cocoon-basierte Web Seite
  • Auflösung von URL Angaben um z.B. eine XML Datei als HTML im Browser anzuzeigen
  • definiert die vorhandenen Komponenten
    • es muss auf eine Implementierung verwiesen werden
    • diese können dann in Pipelines benutzt werden
    • es werden Default-Komponenten definiert

Aufbau:

<?xml version="1.0" encoding="UTF-8"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
  <map:components>
    <map:generators default=„file“/>
    <map:transformers/>
    <map:serializers/>
    <map:readers/>
    <map:selectors/>
    <map:matchers/>
    <map:actions/>
  </map:components>
  <map:views/>
  <map:resources/>
  <map:action-sets/>
  <map:pipelines/>
</map:sitemap>

Pipelining

  • Eigentliche Arbeit von Cocoon wird in Pipelines ausgeführt
  • Komponenten der Pipeline
    • Generator: Liefert den Inhalt des angeforderten Dokuments
    • Transformator (ein oder mehrere): Hier wird der Logik Teil der Verarbeitung implementiert und der gewünschte Inhalt formatiert, sowie das Layout erzeugt
  • Serialisierer: Erzeugt das fertige Dokument, indem das Layout des Transformators in das gewünschte Dokumentenformat übersetzt (z.B. PDF oder HTML)
  • Komponenten können weitere Parameter übergeben werden, die dann als untergeordnete Elemente eingefügt werden

Beispielhafte Cocoon Pipeline

Logik-Komponenten

Matcher

  • Matcher sind das Bindeglied einer Anfrage durch einen Client an Cocoon und den auszuführenden Operationen einer Pipeline
  • Matching zwischen dem Request und einem Matcher
    • Innerhalb einer Pipeline wird dafür ein match-Element festgelegt, für welche URI‘s diese Pipeline ausgeführt werden soll
    • Es können auch mehrere map:match-Elemente in einer Pipeline definiert werden
    • Die Reihenfolge muss damit von den spezielleren zu den allgemeineren Match-Definitionen verlaufen
    • Innerhalb eines map:match-Elements werden die auszuführenden Operationen (Generierung/Bereitstellung eines XML Dokumentes, Durchführen einer Transformation) definiert
    • Standard-Matcher: Wildcard-Matcher
  • es gilt First-Match in der Sitemap –> Reihenfolge der Matchers ist signifikant

Selector

  • Wird verwendet um bestimmte Informationen des Requests auszuwerten
  • Meist im HTML Header übertragen, wenn eine Webseite angefordert wird
  • Verfügbare Selektoren:
    • BrowserSelector → Prüft den verwendeten Browser
    • HostSelector → Prüft den Host-Paramter des HTTP-Requests
    • ParamterSelector → Prüft einen definierten Parameter innerhalb Cocoon
    • HeaderSelector → Prüft den Inhalt des HTTP-Request-Headers
    • Session Selector → für die Session Steuerung
    • Code Selector → führt Java Code als Test aus
  • Typisch für Anwendung eines Selektors sind die Verwendung von verschiedenen StyleSheets anhand des verwendeten Browsers

Bearbeitungskomponenten

Generator

  • Startpunkt von CocoonPipelines
  • Liest eine Eingabe und erzeugt eine Ausgabe in Form von SAX-Ereignissen
  • Diese Ereignisse werden dann z.B. von einem Transformator verarbeitet

Transformer

  • Verarbeitet SAX Ereignisse um dann wieder SAX-Ereignisse weiterzuleiten
  • Durch diesen Aufbau kann man mehrere Transformatoren hintereinander ausführen und damit das endgültige Dokument mit Inhalt und Grundlayout erzeugen
  • Wird bei mehrsprachigen Webseiten verwendet (Internationalization)

Serializer

  • Das letzte Element der Pipeline
  • Wandelt die Ausgabe des Transformators (SAX Stream) in das Zieldokument um (z.B. PDF-Datei) → Repräsentation

Reader

  • Daten können ohne weitere Verarbeitung an den Client zurückgeliefert werden
  • für nicht-XML Daten in einer Cocoon Site → Vor allem bei Binärdaten wie Bilder eingesetzt
  • für sehr einfache Pipelines (einzigen Komponenten einer Pipeline)
  • mitgelieferte Reader
    • ResourceReader → zum Lesen von Binärdaten
    • JSPReader → zum Lesen von Ausgaben von JSP-Seiten

Action

  • Es werden dynamische Laufzeitparameter manipuliert oder Operationen auf dem Server durchgeführt
  • erzeugen keine dargestellten Daten → Steuerung des Ablauf einer Pipeline

Views

  • Sind nützlich um Ergebnisse einzelner Bearbeitungsstufen zu prüfen (z.B. nach jedem Transformator)
  • Ausführung eines Views in einer Pipeline beendet deren eigene Ausführung und setzt die Verarbeitung im View fort

Ressourcen

  • Resources sind wiederverwendbare Pipelines → Auslagerung häufig genutzter Operationen
  • Können als Unterprogramme oder als versteckte Weiterleitung angesehen werden

Kontext

Weiterführende Beiträge


Navigation

Alphabetischer Index
Akronyme