Anleitung für den programmgesteuerten Zugriff auf das AEM-JCR

Sie können programmgesteuert Knoten und Eigenschaften ändern, die sich innerhalb des Adobe CQ-Repositorys befinden, das Teil von Adobe Marketing Cloud ist. Für den Zugriff auf das CQ-Repository verwenden Sie die Java Content Repository (JCR)-API. Mit der JCR-API können Sie Erstellungs-, Ersetzungs-, Aktualisierungs- und Lösch- (CRUD)-Vorgänge für Inhalte im Adobe CQ-Repository durchführen. For more information about the Java JCR API, see https://jackrabbit.apache.org/jcr/jcr-api.html.

Hinweis

Dieser Entwicklungsartikel modifiziert das Adobe CQ-JCR aus einer externen Java-Anwendung. Es besteht auch die Möglichkeit, das JCR aus einem OSGi-Bundle mithilfe der JCR-API zu modifizieren. For details, see Persisting CQ data in the Java Content Repository.

Hinweis

To use the JCR API, add the jackrabbit-standalone-2.4.0.jar file to your Java application’s class path. You can obtain this JAR file from the Java JCR API web page at https://jackrabbit.apache.org/jcr/jcr-api.html.

Hinweis

Eine Anleitung zur Abfrage des Adobe CQ-JCR mithilfe der JCR-Abfrage-API finden Sie in Abfragen von Adobe Experience Manager-Daten mit der JCR-API.

Repository-Instanz erstellen

Es gibt unterschiedliche Verfahren zur Herstellung einer Verbindung mit einem Repository. In diesem Entwicklungsartikel wird eine statische Methode verwendet, die der Klasse org.apache.jackrabbit.commons.JcrUtils zuzuordnen ist. Der Name der Methode lautet getRepository. Diese Methode verwendet einen Zeichenfolgenparameter, der die URL des Adobe CQ-Servers darstellt. Beispiel http://localhost:4503/crx/server.

Die Methode getRepository gibt eine Repository-Instanz zurück, was im folgenden Codebeispiel veranschaulicht wird.

//Create a connection to the AEM JCR repository running on local host
Repository repository = JcrUtils.getRepository("http://localhost:4503/crx/server");

Sitzungsinstanz erstellen

The Repositoryinstance represents the CRX repository. You use the Repositoryinstance to establish a session with the repository. To create a session, invoke the Repositoryinstance’s loginmethod and pass a javax.jcr.SimpleCredentials object. The loginmethod returns a javax.jcr.Session instance.

You create a SimpleCredentialsobject by using its constructor and passing the following string values:

  • den Benutzernamen und
  • das zugehörige Kennwort

When passing the second parameter, call the String object’s toCharArraymethod. The following code shows how to call the loginmethod that returns a javax.jcr.Sessioninstance.

//Create a Session instance
javax.jcr.Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray()));

Knoteninstanz erstellen

Use a Sessioninstance to create a javax.jcr.Node instance. A Nodeinstance lets you perform node operations. Beispielsweise können Sie einen neuen Knoten erstellen. To create a node that represents the root node, invoke the Sessioninstance's getRootNode method, as shown in the following line of code.

//Create a Node
Node root = session.getRootNode();

Once you create a Nodeinstance, you can perform tasks such as creating another node and adding a value to it. Mit dem folgenden Code werden beispielsweise zwei Knoten erstellt und dem zweiten Knoten ein Wert hinzugefügt.

// Store content 
Node day = adobe.addNode("day");
day.setProperty("message", "Adobe CQ is part of the Adobe Digital Marketing Suite!");

Knotenwerte abrufen

To retrieve a node and its value, invoke the Nodeinstance’s getNodemethod and pass a string value that represents the fully-qualified path to the node. Betrachten Sie die Knotenstruktur, die im vorherigen Codebeispiel erstellt wurde. Zum Abrufen des Tagesknotens geben Sie „adobe/day“ an, wie das folgende Codebeispiel zeigt:

// Retrieve content
Node node = root.getNode("adobe/day");
System.out.println(node.getPath());
System.out.println(node.getProperty("message").getString());

Knoten im Adobe CQ-Repository erstellen

The following Java code example represents a Java class that connects to Adobe CQ, creates a Sessioninstance, and adds new nodes. Einem Knoten wird ein Datenwert zugewiesen, woraufhin der Wert des Knotens und seines Pfades aus der Konsole geschrieben wird. Wenn Sie die Sitzung abgeschlossen haben, melden Sie sich unbedingt ab.

/*
 * This Java Quick Start uses the jackrabbit-standalone-2.4.0.jar
 * file. See the previous section for the location of this JAR file
 */
 
import javax.jcr.Repository; 
import javax.jcr.Session; 
import javax.jcr.SimpleCredentials; 
import javax.jcr.Node; 
 
import org.apache.jackrabbit.commons.JcrUtils;
import org.apache.jackrabbit.core.TransientRepository;

public class GetRepository {

public static void main(String[] args) throws Exception { 
 
try { 
 
    //Create a connection to the CQ repository running on local host 
    Repository repository = JcrUtils.getRepository("http://localhost:4503/crx/server");
   
   //Create a Session
   javax.jcr.Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray())); 
 
  //Create a node that represents the root node
  Node root = session.getRootNode(); 
 
  // Store content 
  Node adobe = root.addNode("adobe"); 
  Node day = adobe.addNode("day"); 
  day.setProperty("message", "Adobe CQ is part of the Adobe Digital Marketing Suite!");

  // Retrieve content 
  Node node = root.getNode("adobe/day"); 
  System.out.println(node.getPath()); 
  System.out.println(node.getProperty("message").getString()); 
 
  // Save the session changes and log out
  session.save(); 
  session.logout();
  }
 catch(Exception e){
  e.printStackTrace();
  }
 } 
}

After you run the full code example and create the nodes, you can view the new nodes in the CRXDE Lite, as shown in the following illustration.

chlimage_1-68

Auf dieser Seite