CMS, Hardware- und Softwareentwicklung, Java, JCR

Open Source Content Management mit JackRabbit

Java Content Repository (JCR)

Das Java Content Repository ist eine Spezifikation für den einheitlichen 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 mehreren Workspaces. Jeder dieser Workspaces enthält eine hierarchische Baumstruktur, die aus Items besteht. Ein Item kann sowohl Node als auch Property sein. Jeder Baum hat genau eine Root Node und kann eine beliebige Tiefe bzw. Breite haben. Eine Node kann Properties und weitere Nodes enthalten.

JackRabbit

JackRabbit ist die Open Source Referenzimplementierung des JCR-Standards von Apache. Im folgenden 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 zugegriffen, welches seine Inhalte im Speicher hält. Mit Ende des Lebenszyklus der Referenz repository ist der Inhalt wieder verschwunden. Dieses Repository eignet sich gut für JUnit-Tests.
Wenn eine JackRabbit-Instanz läuft, kann man diese über eine Instanz von RMIRemoteRepository ansprechen.

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

Wenn der Programmcode erfolgreich gelaufen ist, existiert jetzt Repository ein Ordner /test1. Dies kann man kontrollieren, indem am Repository per WebDAV anbindet. Nach dem Anmelden mit admin admin sieht man das Ergebnis.


Mit dem freien Tool JCR-Explorer kann man noch etwas komfortabler mit dem Repository arbeiten. Man kann Knoten mit entsprechendem Typ anlegen, Properties editieren, komplette Teilbäume verschieben oder kopieren und einiges mehr.

 

Share on FacebookTweet about this on TwitterPin on Pinterest