Come accedere a livello di programmazione al JCR per AEM how-to-programmatically-access-the-aem-jcr
Puoi modificare in modo programmatico i nodi e le proprietà che si trovano all’interno dell’archivio Adobe CQ, che fa parte di Adobe Experience Cloud. Per accedere all’archivio CQ, utilizza l’API Java™ Content Repository (JCR). Puoi utilizzare l’API Java™ JCR per creare, sostituire, aggiornare ed eliminare (CRUD) 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.
jackrabbit-standalone-2.4.0.jar
al percorso della classe dell'applicazione Java™. Puoi ottenere questo file JAR dalla pagina Web dell'API Java™ JCR all'indirizzo https://jackrabbit.apache.org/jcr/jcr-api.html.Creare un’istanza dell’archivio create-a-repository-instance
Sebbene esistano diversi modi per connettersi a un repository e stabilire una connessione, questo articolo di sviluppo utilizza un metodo statico che appartiene alla classe org.apache.jackrabbit.commons.JcrUtils
. Il nome del metodo è getRepository
. Questo metodo accetta un parametro stringa che rappresenta l’URL del server Adobe CQ. Esempio: http://localhost:4503/crx/server
.
Il metodo getRepository
restituisce un'istanza 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 Session create-a-session-instance
L'istanza Repository
rappresenta l'archivio CRX. Utilizzare l'istanza Repository
per stabilire una sessione con l'archivio. Per creare una sessione, richiamare il metodo login
dell'istanza Repository
e passare un oggetto javax.jcr.SimpleCredentials
. Il metodo login
restituisce un'istanza javax.jcr.Session
.
Per creare un oggetto SimpleCredentials
, utilizzare il relativo costruttore e passare i seguenti valori stringa:
- Il nome utente;
- La password corrispondente
Quando si passa il secondo parametro, chiamare il metodo toCharArray
dell'oggetto String. Nel codice seguente viene illustrato come chiamare il metodo login
che restituisce un javax.jcr.Sessioninstance
.
//Create a Session instance
javax.jcr.Session session = repository.login( new SimpleCredentials("admin", "admin".toCharArray()));
Creare un’istanza del nodo create-a-node-instance
Utilizzare un'istanza Session
per creare un'istanza javax.jcr.Node
. Un'istanza Node
consente di eseguire operazioni sui nodi. Ad esempio, puoi creare un nodo. Per creare un nodo che rappresenta il nodo principale, richiamare il metodo getRootNode
dell'istanza Session
, come illustrato nella riga di codice seguente.
//Create a Node
Node root = session.getRootNode();
Dopo aver creato un'istanza Node
, è 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 retrieve-node-values
Per recuperare un nodo e il relativo valore, richiamare il metodo getNode
dell'istanza Node
e passare un valore stringa che rappresenta il percorso completo del nodo. Considera la struttura dei nodi creata nell’esempio di codice precedente. Per recuperare il nodo del giorno, specifica adobe/day, come illustrato 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 nel repository di Adobe CQ create-nodes-in-the-adobe-cq-repository
Il codice Java™ seguente rappresenta una classe Java™ che si connette ad Adobe CQ, crea un'istanza Session
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, 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 aver creato i nodi, è possibile visualizzare i nuovi nodi in CRXDE Liti, come illustrato nella figura seguente.