Inhaltsverzeichnis
Tomcat-4 und Cocoon2 sind die jeweils neuesten und derzeit noch Beta-Versionen. Aber ich konnte im Betrieb zunächst keine größeren Unregelmäßigkeiten feststellen.
Inzwischen sind die Installationsprozeduren für Windows und Linux annährend gleich - dank Java.
| Java Development Kit (jdk1.3.1), Windows | http://java.sun.com/j2se/1.3/download-windows.html |
| Java Development Kit (jdk1.3.1), Linux | ftp://ftp.openlinux.org/pub/mirrors/ftp.tux.org/java/JDK-1.3.1/i386/FCS/ j2sdk-1.3.1-FCS-linux-i386.tar.bz2 |
| PowerArchiver | Powerarchiver |
| Tomcat 4 |
Windows:http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0..1/bin/jakarta-tomcat-4.0.1.exe Linux: http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0..1/bin/jakarta-tomcat-4.0.1.tar.gz |
| Cocoon 2 | Cocoon2 (Latest Distribution) |
Inhaltsverzeichnis
Im Verzeichnis, in das man sich das Java Development Kit von obiger Adresse heruntergeladen hat, findet sich eine 32 MB große Datei mit Namen: jsdk-1_3_1_01-win
Doppelcklick startet die automatische Extraktion und anschließend den Installations-Assistenten. Einfach den Anweisungen folgen.
Nach erfolgter Installation muss JAVA_HOME als Umgebungsvariable eingetragen werden:
Inhaltsverzeichnis
Als im Installationsassistenten nach dem Installationspfad gefragt wurde habe ich
D:\Programme\Tomcat4 angegeben. So wird im Folgenden der Fundort von Tomcat genannt. Dies ist aber nur als Beispiel zu verstehen.
Die Installation folgt dem üblichen Procedere:
Heruntergeladene Source nach
/usr/local kopieren, auspacken mit:
tar -xzf jakarta-tomcat-4.0.1.tar.gz
Es entsteht das Verzeichnis:
/usr/local/jakarta-tomcat-4.0.1 und wird der Einfachheit halber umbenannt in:
/usr/local/tomcat4
Start und Stop können manuell über die Icons auf dem Bildschirm erfolgen, oder in:
D:\Programme\tomcat4\bin
mit startup
Letzteres kann man auch als Task anlegen (Start - Einstellungen -Systemsteuerung - geplante Tasks ), so dass Tomcat automatisch beim Booten mit startet.
shutdown beendet den Server.
Im Verzeichnis:
/usr/local/tomcat4/bin
Wird das Kommando ausgeführt: startup.sh
Um Tomcat4 von überall starten und stoppen zu können, habe ich zwei kleine Skript geschrieben und nach /usr/local/bin gestellt:
tom4start
#! /bin/sh /usr/local/tomcat4/bin/startup.sh &> /usr/local/tomcat4/logs/tom4start.logtom4stop
#! /bin/sh /usr/local/tomcat4/bin/shutdown.sh &> /usr/local/tomcat4/logs/tom4stop.log
Angehalten wird der Server mit shutdown, bzw. tom4stop.
Weil man unter Linux sowieso immer eine Konsole offen hat, habe ich mir nicht die Mühe gemacht, Tomcat 4 automatisch starten zu lassen.
Cocoon2 liegt als Java-Source vor. Es muss compiliert und zu einem .war-Archiv zusammengestellt werden. Das Vorgehen hierbei ist vom Betriebssystem weitgehend unabhängig.
Inhaltsverzeichnis
Zunächst Tomcat starten im Terminalfenster mit: startup (s.o); die Zeile:
2001-10-10 16:41:33 - ContextManager: Adding context Ctx ( /cocoon ) im Startprotokoll von Tomcat zeigt, dass das Cocoon-Verzeichnis eingebunden worden ist.
Die URL: http://localhost:8080/cocoon bringt die Startseite von Cocoon
Das sagt aber noch nichts darüber aus, ob XML verarbeitet wird! Darüber bringt erst die Aktivierung des Links: Live Samples auf der Startseite von Cocoon Klarheit: Nach dem Anklicken vergeht einige Zeit (Java und Cocoon sind nicht die Allerschnellsten), danach erscheint die Seite mit den Beispielen.
Inhaltsverzeichnis
Die Verknüpfung von XML-Source mit XSL-Stylesheet funktioniert bei Cocoon2 ganz anders als bei seinem Vorläufer. Wie, das soll an einem kleinen Beispiel demonstriert werden.
Unter Windows sollte man sich vorhert einen vernünftigen Editor wie UltraEdit beschaffen. Der ist zwar nur Shareware, aber 45 Tage sind frei, das langt erst einmal.
In Linux gibt es bekanntermaßen Editoren zuhauf. Ich bevorzuge Nedit.
Zunächst muss herausgefunden werden, wie denn XML und XSL zueinander finden.
Zentraler Ort dafür ist
../cocoon/sitemap.xmap. Dort findet sich die Passage:
<map:match pattern="hello.html">
<map:generate src="docs/samples/hello-page.html"/>
<map:transform src="stylesheets/page/simple-page2html.xsl"/>
<map:serialize type="html"/>
</map:match>
Hier wird die Datei: ../cocoon/docs/samples/hello-page.xml
So weit, so gut. Aber können wir das auch? Ich kopiere in sitemap.xmap den hello.html-Block von oben direkt dadrunter und =E4ndere ihn ein wenig ab:
<map:match pattern="hello2.html"> <map:generate src="docs/samples/hello2-page.html"/> <map:transform src="stylesheets/page/simple-page2html.xsl"/> <map:serialize type="html"/> </map:match>und rufe das im Browser auf mit: http://localhost:8080/cocoon/hello2.html
Und siehe da: Mir wird anstandslos der Text aus dem leicht geänderten hello2-page.xml zurückgeliefert!
Inhaltsverzeichnis
Der tägliche Umgang mit DocBook würde schon eine schnellere Parsung von XML nach HTML lohnen. Also soll hier dargestellt werden, wie man das in Cocoon 2 einbindet.
Docbook installieren:
Unter: http://exist..sourceforge.net/userguide/ch01s06.html
findet sich eine kurze Anleitung zur Vereinigung von XML und xsl unter Cocoon 2 in der sitemap.xmap:
<map:match pattern="shakespeare/**.html">
<map:generate src="http://localhost:8088/shakespeare/{1}.html"/>
<map:transform src="shakes.xsl"/>
<map:serialize type="html"/>
</map:match>
Windows:
D:\Programme\Tomcat4\webapps\cocoon\sitemap.xmap
Linux: /usr/local/tomcat4/webapps/cocoon/sitemap.xmap
Hier handelt es sich um die zentrale Konfigurationsdatei für die XML-Webseiten. Darin wird unter: Hello.html die Passage eingesetzt:
<!-- ================ DocBook =========================== -->
<map:match pattern="docbook/**.html">
<map:generate src="docbook/{1}.html"/>
<map:transform src="stylesheets/docbook-xsl/html/docbook.xsl"/>
<map:serialize type="html"/>
</map:match>
<map:match pattern="docbook/**.html">
<map:generate src="docbook/{1}.html"/>
<map:transform src="stylesheets/docbook-xsl/html/docbook.xsl"/>
<map:serialize type="html"/>
</map:match>
<map:match pattern="docbook/**.jpg">
<map:read src="docbook/{1}.jpg" mime-type="image/jpg"/>
</map:match>
<map:match pattern="docbook/**.gif">
<map:read src="docbook/{1}.gif" mime-type="image/gif"/>
</map:match>
<map:match pattern="docbook/**.png">
<map:read src="docbook/{1}.png" mime-type="image/png"/>
</map:match>
Es bewirkt, dass alle Dateien innerhalb des Verzeichnisbaumes docbook mit dem DocBook-Stylesheet geparst werden, es sei denn, für ein Unterverzeichnis ist ein eigenens Stylesheet angegeben.
Diese Passage sorgt dafür, dass Dateien sowohl als .xml als auch .html aufgerufen werden können
Außerdem sorgt es für die richtige Einbindung der Grafikformate .jpg, .gif und .png
Ein kleiner Test:
TOMCAT_HOME\webapps\cocoon\docbook\docbook1.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <article> <title>Mein erstes DocBook</title> <para> Nur ein kleiner Test... </para> </article>
Dieser File dient als Test für den Eintrag in sitemap.xmap
Er wird aufgerufen mit:
http://osk018:8080/cocoon/docbook/docbook1.html
Um Dateien aus Unterordnern von cocoon/docbook/ aufzurufen, folgt man der Syntax: (pfadname)/(xml-datei).html, also beispielsweise:
http://osk018:8080/cocoon/docbook/ordner2/docbook2.html
Cocoon2 ist insoweit abwärtskompatibel, als es keine Rolle spielt, ob die alten xml-Header mit in den Dateien stehen:
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- edited with XML Spy v3.5 NT (http://www.xmlspy.com) by Andreas Popper (ohltec AG) --> <?xml-stylesheet href="../../xsl/docbook-xsl-1.41/html/docbook.xsl" type="text/xsl"?> <?cocoon-process type="xslt"?>Jetzt genügt ja ein einfaches:
<?xml version="1.0" ?> ,und in der gesamten Ordnerstruktur unterhalb des Ordners, für den in sitemap.xmap das Stylesheet: docbook.xsl eingetragen ist, werden die mit .html-Endung aufgerufenen .xml-Dateien nach HTML geparst und an den Browser ausgeliefert. Das ist schon eine deutliche Erleichterung gegen Cocoon1.x, wo jede .xml-Datei im Header einen eigenen Hinweis auf das zu verwendende Stylesheet brauchte!
Wenn alles gut gegangen ist, sollte jetzt eine XML-Produktionsumgebung zur Verfügung stehen. Weiteren Schritten in dieser Richtung steht nun nichts mehr im Wege!
Der Geschwindigkeitsgewinn ist übrigens nicht unerheblich: Für eine relativ große Datei, für die das DocBook-Stylesheet aufgerufen werden muss (was am meisten Zeit kostet!), brauchen Tomcat-4 Cocoon2 auf einem Pentium 450 fünf Sekunden .
Die gleiche Datei mit dem gleichen Stylesheet brauchte mit Tomcat-3-2-3 und Cocon-1.8.2 auf einem Dual Pentium 850 sieben Sekunden!
Happy Coding!