Come accedere programmaticamente a AEM JCR how-to-programmatically-access-the-aem-jcr

CAUTION
AEM 6.4 ha raggiunto la fine del supporto esteso e questa documentazione non viene più aggiornata. Per maggiori dettagli, consulta la nostra periodi di assistenza tecnica. Trova le versioni supportate qui.

Puoi modificare programmaticamente nodi e proprietà che si trovano all’interno dell’archivio Adobe CQ, che fa parte di Adobe Marketing Cloud. Per accedere all’archivio CQ, utilizza l’API Java Content Repository (JCR). Puoi utilizzare l’API Java JCR per eseguire operazioni di creazione, sostituzione, aggiornamento ed eliminazione (CRUD) su contenuti che si trovano all’interno dell’archivio Adobe CQ. Per ulteriori informazioni sull'API Java JCR, vedi https://jackrabbit.apache.org/jcr/jcr-api.html.

NOTE
Questo articolo di sviluppo modifica Adobe CQ JCR da un'applicazione Java esterna. Al contrario, puoi modificare il JCR dall'interno di un bundle OSGi utilizzando l'API JCR. Per maggiori dettagli, vedi Persistenza dei dati CQ nel Java Content Repository.
NOTE
Per utilizzare l’API JCR, aggiungi la jackrabbit-standalone-2.4.0.jar nel percorso della classe dell'applicazione Java. Puoi ottenere questo file JAR dalla pagina web API Java JCR all'indirizzo https://jackrabbit.apache.org/jcr/jcr-api.html.
NOTE
Per scoprire come eseguire una query su Adobe CQ JCR utilizzando l’API JCR Query, vedi Query dei dati di Adobe Experience Manager tramite l’API JCR.

Creare un’istanza di archivio create-a-repository-instance

Sebbene esistano diversi modi per connettersi a un archivio e stabilire una connessione, questo articolo di sviluppo utilizza un metodo statico appartenente al org.apache.jackrabbit.commons.JcrUtils classe. Il nome del metodo è getRepository. Questo metodo prende un parametro di stringa che rappresenta l'URL del server Adobe CQ. Esempio http://localhost:4503/crx/server.

La getRepositoryrestituisce un Repository, come illustrato nell’esempio di codice seguente.

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

Creare un’istanza di sessione create-a-session-instance

La RepositoryL'istanza rappresenta l'archivio CRX. Utilizzi le Repositoryistanza per stabilire una sessione con l'archivio. Per creare una sessione, richiama il Repositorydell’istanza logine passare un javax.jcr.SimpleCredentials oggetto. La loginrestituisce un javax.jcr.Session istanza.

Crea un SimpleCredentialsutilizzando il relativo costruttore e passando i seguenti valori stringa:

  • Nome utente;
  • Password corrispondente

Quando trasmetti il secondo parametro, chiama l'oggetto String toCharArraymetodo . Il codice seguente mostra come chiamare il loginmetodo che restituisce un javax.jcr.Sessioninstance.

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

Creare un’istanza di nodo create-a-node-instance

Utilizza un Sessionistanza per creare un javax.jcr.Node istanza. A Nodeinstance ti consente di eseguire le operazioni sui nodi. Ad esempio, puoi creare un nuovo nodo. Per creare un nodo che rappresenta il nodo principale, richiama il Sessiondell'istanza getRootNode , come illustrato nella seguente riga di codice.

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

Una volta creata una NodeAd esempio, puoi eseguire attività quali la creazione di un altro nodo e l’aggiunta di un valore ad esso. Ad esempio, il codice seguente crea due nodi e aggiunge un valore al secondo nodo.

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

Recupera valori nodo retrieve-node-values

Per recuperare un nodo e il relativo valore, richiama il Nodedell’istanza getNodee passare un valore stringa che rappresenta il percorso completo del nodo. Considera la struttura del nodo creata nell’esempio di codice precedente. Per recuperare il nodo giorno, specifica adobe/day, come mostrato nel codice seguente:

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

Creare nodi nell’archivio di Adobe CQ create-nodes-in-the-adobe-cq-repository

Il seguente esempio di codice Java rappresenta una classe Java che si connette ad Adobe CQ e crea un Sessione aggiunge nuovi nodi. A un nodo viene assegnato un valore di dati, quindi il valore del nodo e il relativo percorso viene scritto sulla console. Al termine della sessione, assicurati di disconnettersi.

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

Dopo aver eseguito l'esempio di codice completo e creato i nodi, puoi visualizzare i nuovi nodi nel CRXDE Lite, come illustrato nella figura seguente.

chlimage_1-68

recommendation-more-help
2315f3f5-cb4a-4530-9999-30c8319c520e