Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden

Open Source Content Management mit JackRabbit

Java Content Repository (JCR)

Das Java Content Repository ist eine Spezifikation für den ein­heit­li­chen Zugriff auf Content , Struktur und Metadaten in einem Repository. Die JCR-Version 1.0 wurde unter JSR 170 und die Version 2.0 unter JSR 283 veröffentlicht.
Das Repository besteht aus einem oder meh­re­ren Workspaces. Jeder die­ser Workspaces ent­hält eine hier­ar­chi­sche Baumstruktur, die aus Items besteht. Ein Item kann sowohl Node als auch Property sein. Jeder Baum hat genau eine Root Node und kann eine belie­bige Tiefe bzw. Breite haben. Eine Node kann Properties und wei­tere Nodes enthalten.

JackRabbit

JackRabbit ist die Open Source Referenzimplementierung des JCR-Standards von Apache. Im fol­gen­den Beispiel ist der Zugriff aufs Repository dargestellt.

package de.communardo.jcr;

import java.io.IOException;

import javax.jcr.LoginException;
import javax.jcr.NoSuchWorkspaceException;
import javax.jcr.Node;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;

import org.apache.jackrabbit.core.TransientRepository;

public class JCRTester {

  public static void main(String[] args) throws LoginException, NoSuchWorkspaceException, RepositoryException, IOException {

    Repository repository = new TransientRepository();
    String user = "admin";
    String password = "admin";

    Session session = repository.login(new SimpleCredentials(user, password.toCharArray()), null);

    Node root = session.getRootNode();
    String primaryNodeTypeName = "nt:folder";
    String relPath = "test1";
    root.addNode(relPath, primaryNodeTypeName);
    session.save();

  }
}

Mit dem TransientRepository wird auf ein Repository zuge­grif­fen, wel­ches seine Inhalte im Speicher hält. Mit Ende des Lebenszyklus der Referenz repository ist der Inhalt wie­der ver­schwun­den. Dieses Repository eig­net sich gut für JUnit-Tests.
Wenn eine JackRabbit-Instanz läuft, kann man diese über eine Instanz von RMIRemoteRepository anspre­chen.

Repository repository = new RMIRemoteRepository("//localhost:1099/jackrabbit");

Wenn der Programmcode erfolg­reich gelau­fen ist, exis­tiert jetzt Repository ein Ordner /test1. Dies kann man kon­trol­lie­ren, indem am Repository per WebDAV anbin­det. Nach dem Anmelden mit admin admin sieht man das Ergebnis.


Mit dem freien Tool JCR-Explorer kann man noch etwas kom­for­ta­bler mit dem Repository arbei­ten. Man kann Knoten mit ent­spre­chen­dem Typ anle­gen, Properties edi­tie­ren, kom­plette Teilbäume ver­schie­ben oder kopie­ren und eini­ges mehr.

blank

29. Dezember 2010
|

Related Posts

1 Kommentar

Da auch JSR-283 erwähnt ist, sollte ver­merkt wer­den, dass mit JCR Version 2 eine Node auch meh­rere Parents haben kann. Die gesamte Beschreibung und das Code-Beispiel bezie­hen sich offen­sicht­lich rein auf Version 1 (JSR-170).

Jürg
http://www.twitter.com/juergmeier

Comments are closed.

Pin It on Pinterest