Federlesen #17: Content- und Dokumentlager der Apachen

Seite 2: JCR & CMIS

Inhaltsverzeichnis

Häufig liegen Dokumente in Unternehmen nicht im Dateisystem, sondern in Content Repositories. Glücklicherweise gibt es mit Content Repository for Java Technology API (JCR) und OASIS CMIS Standards, um einheitlich Content in Repositories zu verwalten. Für beide Standards stellt Apache die jeweiligen Referenzimplementierungen. Der JCR ist in den Spezifikationen JSR 170 (1.0) und 283 (2.0) festgelegt und wird von Apache Jackrabbit und seinem Nachfolger Oak, unter der Federführung von Adobe beziehungsweise Day Software, implementiert.

Jackrabbit kann Hierarchien strukturierten und unstrukturierten Contents verwalten und dazu Metadaten vergeben. Neben einer eigenen Abfragesprache und der Vergabe feingranularer Zugriffsrechte bietet das Projekt Dienste zum Versionieren und Durchsuchen an. Seit 2006 ist es ein Apache-Top-Level Projekt, viele kommerzielle und quelloffene CMS-Produkte verwenden es mittlerweile. Jackrabbit bietet sowohl Server- als auch Client-Komponenten an, kann verschiedene Content-Formate verwalten und unterstützt die Zugriffsprotokolle HTTP, WebDAV und RMI. Die Software lässt sich als separater Einzelserver oder als Teil einer Webanwendung betreiben.

Am einfachsten startet der Entwickler Jackrabbit als Einzelserver mit dem integrierten Jetty-Webserver und der Derby-Datenbank mit

java -Xmx256m -jar jackrabbit-standalone-2.8.0.jar.

Leider funktioniert der populate.jsp-Link https://issues.apache.org/jira/browse/JCR-3274 nicht, da die Google-Suche inzwischen über HTTPS statt HTTP ausgeführt wird und der Benutzer admin mit dem gleichlautenden Passwort in der Datei populate.jsp als

new SimpleCredentials("username", "password".toCharArray())) ↵
   with new SimpleCredentials("admin", "admin".toCharArray()))

eingetragen sein muss. Anschließend fügt man mit

jar uf jackrabbit-standalone-2.8.0.jar populate.jsp

die geänderte Datei wieder zum JAR hinzu. Mit

java -jar jackrabbit-standalone-2.8.0.jar  -?

können sich Entwickler noch weitere Startoptionen anzeigen lassen. Die Verwaltungsoberfläche rufen sie mit http://localhost:8080/ im Browser auf. Als Benutzer mit beliebigem Passwort können sie entweder admin oder anonymous verwenden. Weitere Einstellungen lassen sich in der Konfigurationsdatei repository.xml vornehmen.

Wer nicht nur mit JCR arbeiten möchte, findet mit CMIS einen offenen Standard, der programmiersprachenunabhängig ist. Da er auf dem Restful-AtomPub-Protokoll (RFC5023) basiert, gibt es eine große Unterstützung von Programmiersprachen und in CMS-Produkten.

Mehr Infos

Apache Chemistry implementiert die CMIS-Standards 1.1 und 1.0. Das Projekt besteht aus einem in Java entwickelten Server, Entwicklungswerkzeugen und Client-Bibliotheken in den Programmiersprachen Python (cmislib), Java (OpenCMIS, Android), PHP (phpclient), Objective-C (ObjectiveCMIS) und C# (DotCMIS).

Der schnellste Einstieg gelingt mit der CMIS Workbench. Diese starten Entwickler mit workbench.bat. Den CMIS-Server bringen sie zum Laufen, indem sie die Webanwendung chemistry-opencmis-server-inmemory 0.11.0.war im Tomcat installieren. Danach ruft man mit http://localhost:8080/chemistry-opencmis-server-inmemory-0.11.0/ den OpenCMIS Server auf. Dort wählt man einen der Webendpunkte für Webservices, AtomPub oder REST für CMIS aus. Für CMIS 1.1 lauten zum Beispiel die URLs für das WS (SOAP) Binding http://localhost:8080/chemistry%2Dopencmis%2Dserver%2Dinmemory%2D0.11.0/services11/cmis?wsdl und das Browser Binding http://localhost:8080/chemistry%2Dopencmis%2Dserver%2Dinmemory%2D0.11.0/browser. In der CMIS Workbench öffnet der Entwickler eine Connection und wählt den Binding Browser, gibt die obige URL ein und lädt von dort das Repository. Mit SELECT * FROM cmis:document präsentieren sich alle Dokumente im Repository. Alternativ kann man sich über die Konsole auch fertige Groovy-Skripte, etwa zum Zählen der Anzahl von Verzeichnissen und Dokumenten im Repository, anzeigen lassen.

Es lässt sich auch das Test Compatibility Kit auf dem Repository ausführen, um zu überprüfen, ob dieses konform mit dem CMIS-Standard ist. Über den Menüpunkt Create Object kann man entweder einen neuen Ordner oder ein neues Dokument anlegen.

Die Apache Software Foundation bietet zum einheitlichen Verwalten und Durchsuchen von Dokumenten und Content für die unterschiedlichsten Zwecke einige spezialisierte Produkte. Viele kommerzielle und Open-Source-Produkte verwenden als Content-Repository Apache Jackrabbit oder Chemistry. Als Referenzimplementierung bieten diese die Garantie, dass Dokumente und Content selbst bei einem Produktwechsel nicht verloren gehen. Da oft noch nicht alle Dokumente in solchen standardkonformen Repositories liegen, bieten Crawler-Produkte wie Nutch und ManifoldCF eine verlässliche Brücke, um die Informationen zu indizieren und sie dann mit einer einheitlichen Suche auszuwerten. So kommt Ordnung in das Content- und Dokumentlager, und es wird verhindert, dass Dokumente zwar abgelegt, aber nur schwer wiedergefunden werden.

Frank Pientka
ist Senior Software Architect bei der Materna GmbH in Dortmund. (ane)