Abstract

Der Artikel führt in das Thema des Java Content Repository (JCR) ein. Eine erste und noch aktuelle Spezifikation erfolgte über JSR170 und eine Überarbeitung durch JSR283 (JCR2.0). Eine OpenSource Implementierung ist Jackrabbit und findet sich auf jackrabbit.apache.org. Die Spezifikation bietet eine Einteilung der Implementationen in folgende Gruppen: + Level 1 nur lesender Zugriff + Level 2 schreibender Zugriff + optionale Funktionalitäten Jackrabbit ist JCR konvorm mit Level 1 und 2 sowie den optionalen Funktionen. Damit ist Jackrabbit eine vollständige Implementierung des JCR 1.0. Das JCR Repository Modell sieht folgende Elemente vor: + Workspace, ist ein abgeschlossener Bereich zur Speicherung von Content + Node, ist ein Verwaltungselement zur Strukturierung des Contents innerhalb eines Workspaces + Property, ist der Content selbst. Ein Property besitzt keine Kinder. Nodes werden nach Typen unterschieden. Hierbei gibt es einige vordefinierte Typen wie: + mix:versionable (für versionierbaren Content) + nt:file (Abbildung von Dateien) + nt:folder (Abbildung von Verzeichnissen) In der Regel müssen und sollen aber eigene Nodetypen definiert werden. Folgende Implementierungen existieren auf dem Markt: + Referenzimplementierung der Firma Day Software + Content Repository Extreme ebenfalls von Day Software + Apache Jackrabbit + Jeiceira, exoJCR, Alfresco und weitere Implementierungen Das zu implementierende API liegt im Package javax.jcr.* Zum Deployment sind 3 Varianten vorstellbar: + Reine Webanwendung mit im war integrierten Repository, das funktioniert auch ohne Applikation Server wie z.B. beim CMS Magnolia + Java EE Resource im Applikationsserver mit Zugriff aus allen dort verteilten Anwendungen + als dedizierter Server welcher einen einheitlichen Zugriff auf das CR bietet z.B. über RMI, WebdAV oder ähnlichem. Folgende Persistenzstrategien existieren: + In-Memory: Content wird nur im Speicher gehalten. Das genügt nur für Tests + ObjectPersistenceManager: Content wird in speziellen Datendateien im Filesystem gehalten. Diese Strategie hat Probleme bei der Verwendung von Clustern. Möglicher Ausweg Netzwerkfähiges Filesystem. + XMLPersistenceManager: Content wird in XML Dateien im Filesystem gehalten. Nachteile durch Probleme bei der Clusterung wie auch schlechte Performance. Nur für Testzwecke zu empfehlen. + SimpleDbPersistenceManager: Content wird per JDBC in einer Datenbank gehalten. Gute Performance aber komplexe Konfiguration. Fazit: JCR ist gut und Jackrabbit eine akzeptable Lösung.

Links and resources

Tags