Hoe te om tot AEM JCR programmatically toegang te hebben

U kunt via programmacode knooppunten en eigenschappen wijzigen in de Adobe CQ-opslagplaats, die deel uitmaakt van de Adobe Marketing Cloud. Als u toegang wilt krijgen tot de CQ-opslagplaats, gebruikt u de JCR-API (Java Content Repository). U kunt de Java JCR API gebruiken om (CRUD)-bewerkingen te maken, te vervangen, bij te werken en te verwijderen op inhoud in de Adobe CQ-opslagplaats. Zie https://jackrabbit.apache.org/jcr/jcr-api.html voor meer informatie over de Java JCR API.

OPMERKING

Dit ontwikkelingsartikel wijzigt het JCR van Adobe CQ van een externe toepassing van Java. U kunt het JCR daarentegen wijzigen vanuit een OSGi-bundel met behulp van de JCR API. Zie CQ-gegevens behouden in de Java Content Repository voor meer informatie.

OPMERKING

Als u de JCR API wilt gebruiken, voegt u het jackrabbit-standalone-2.4.0.jar-bestand toe aan het klassepad van uw Java-toepassing. U kunt dit JAR-bestand verkrijgen via de Java JCR API-webpagina op https://jackrabbit.apache.org/jcr/jcr-api.html.

OPMERKING

Zie Adobe Experience Manager-gegevens opvragen met de JCR API voor meer informatie over het opvragen van een query op de JCR API.

Een instantie Repository maken

Hoewel er verschillende manieren zijn om verbinding te maken met een opslagplaats en een verbinding tot stand te brengen, gebruikt dit ontwikkelingsartikel een statische methode die tot de klasse org.apache.jackrabbit.commons.JcrUtils behoort. De naam van de methode is getRepository. Deze methode gebruikt een tekenreeksparameter die de URL van de Adobe CQ-server vertegenwoordigt. Bijvoorbeeld http://localhost:4503/crx/server.

De methode getRepositoryretourneert een Repositoryinstantie, zoals in het volgende codevoorbeeld wordt getoond.

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

Een Session-instantie maken

De Repositoryinstantie vertegenwoordigt de CRX-opslagplaats. U gebruikt de Repositoryinstantie om een zitting met de bewaarplaats te vestigen. Als u een sessie wilt maken, roept u de methode loginvan de instantie aan en geeft u een object javax.jcr.SimpleCredentials door. Repository De methode loginretourneert een javax.jcr.Session-instantie.

U maakt een SimpleCredentialsobject door de constructor ervan te gebruiken en de volgende tekenreekswaarden door te geven:

  • de gebruikersnaam;
  • Het bijbehorende wachtwoord

Roep bij het doorgeven van de tweede parameter de methode toCharArrayvan het object String aan. De volgende code toont hoe te om de loginmethode te roepen die javax.jcr.Sessioninstance terugkeert.

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

Een knooppuntinstantie maken

Gebruik een Sessioninstantie om een javax.jcr.Node instantie te maken. Met een Node-instantie kunt u nodebewerkingen uitvoeren. U kunt bijvoorbeeld een nieuw knooppunt maken. Als u een knooppunt wilt maken dat het hoofdknooppunt vertegenwoordigt, roept u de methode getRootNode van de Sessioninstantie aan, zoals in de volgende coderegel wordt getoond.

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

Wanneer u een Nodeinstantie hebt gemaakt, kunt u taken uitvoeren zoals een ander knooppunt maken en er een waarde aan toevoegen. Met de volgende code worden bijvoorbeeld twee knooppunten gemaakt en een waarde toegevoegd aan het tweede knooppunt.

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

Nodewaarden ophalen

Als u een knooppunt en de bijbehorende waarde wilt ophalen, roept u de methode getNodevan de instantie op en geeft u een tekenreekswaarde door die het volledig gekwalificeerde pad naar het knooppunt vertegenwoordigt. Node Overweeg de knoopstructuur die in het vorige codevoorbeeld wordt gecreeerd. Als u het dagknooppunt wilt ophalen, geeft u adobe/day op, zoals in de volgende code wordt getoond:

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

Maak knooppunten in de Adobe CQ Repository

Het volgende Java-codevoorbeeld vertegenwoordigt een Java-klasse die verbinding maakt met Adobe CQ, een Sessioninstantie maakt en nieuwe knooppunten toevoegt. Een knoop wordt toegewezen een gegevenswaarde en dan wordt de waarde van de knoop en zijn weg geschreven aan de console. Als u klaar bent met de sessie, moet u zich afmelden.

/*
 * 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();
  }
 }
}

Nadat u het volledige codevoorbeeld in werking stelt en de knopen creeert, kunt u de nieuwe knopen in CRXDE Lite bekijken, zoals aangetoond in de volgende afbeelding.

chlimage_1-68

Op deze pagina