Come accedere a AEM JCR a livello di programmazione

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

Nota

Questo articolo di sviluppo modifica il JCR Adobe CQ da un'applicazione Java esterna. Al contrario, potete modificare il JCR dall'interno di un bundle OSGi utilizzando l'API JCR. Per informazioni dettagliate, consultate Persisting CQ data in Java Content Repository.

Nota

Per utilizzare l'API JCR, aggiungete il jackrabbit-standalone-2.4.0.jar file al percorso di classe dell'applicazione Java. Potete ottenere questo file JAR dalla pagina Web Java JCR API all'indirizzo https://jackrabbit.apache.org/jcr/jcr-api.html.

Nota

Per informazioni su come eseguire una query Adobe CQ JCR utilizzando l'API Query JCR, consultate Query dei dati Adobe Experience Manager tramite l'APIJCR.

Creare un'istanza Repository

Anche se esistono diversi modi per connettersi a un repository e stabilire una connessione, questo articolo di sviluppo utilizza un metodo statico che appartiene alla org.apache.jackrabbit.commons.JcrUtils classe. Il nome del metodo è getRepository. Questo metodo richiede un parametro di stringa che rappresenta l'URL del server Adobe CQ . Esempio http://localhost:4503/crx/server.

Il getRepositorymetodo restituisce un’ Repositoryistanza, come illustrato nel seguente esempio di codice.

//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

L' Repositoryistanza rappresenta l'archivio CRX. L’ Repositoryistanza viene utilizzata per stabilire una sessione con la directory archivio. Per creare una sessione, richiamate il Repositorymetodo dell’ loginistanza e passate un javax.jcr.SimpleCredentials oggetto. Il loginmetodo restituisce un’ javax.jcr.Session istanza.

È possibile creare un SimpleCredentialsoggetto utilizzando il relativo costruttore e passando i seguenti valori di stringa:

  • Nome utente;
  • La password corrispondente

Quando si passa il secondo parametro, chiamare il toCharArraymetodo dell'oggetto String. 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 Node

Usate un’ Sessionistanza per creare un’ javax.jcr.Node istanza. Un' Nodeistanza consente di eseguire operazioni sui nodi. Ad esempio, puoi creare un nuovo nodo. Per creare un nodo che rappresenta il nodo principale, invocare il Sessionmetodo dell' getRootNode istanza, come illustrato nella riga di codice seguente.

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

Dopo aver creato un' Nodeistanza, è possibile eseguire attività quali la creazione di un altro nodo e l'aggiunta di un valore. 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

Per recuperare un nodo e il relativo valore, richiamare il Nodemetodo dell' getNodeistanza e passare un valore di stringa che rappresenta il percorso completo del nodo. Considerare la struttura dei nodi creata nell'esempio di codice precedente. Per recuperare il nodo giorno, specificate adobe/day, come illustrato nel seguente codice:

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

Creazione di nodi nell'archivio di Adobe CQ

Il seguente esempio di codice Java rappresenta una classe Java che si connette a Adobe CQ, crea un' Sessionistanza e aggiunge nuovi nodi. A un nodo viene assegnato un valore di dati, quindi il valore del nodo e il relativo percorso vengono scritti nella console. Al termine della sessione, disconnettetevi.

/*
 * 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, è possibile visualizzare i nuovi nodi nel CRXDE Lite, come illustrato nell’illustrazione seguente.

chlimage_1-68

In questa pagina