現在表示中:

Adobe Marketing Cloud に搭載されている Adobe CQ リポジトリ内にあるノードとプロパティを、プログラムから変更できます。CQ リポジトリにアクセスするには、Java Content Repository(JCR)API を使用します。Java JCR API を使用すれば、Adobe CQ リポジトリ内にあるコンテンツに対して、作成、置換、更新および削除(CRUD)の操作を実行できます。Java JCR API について詳しくは、http://jackrabbit.apache.org/jcr-api.html を参照してください。

 

注意:

この開発向けの記事では、外部 Java アプリケーションから Adobe CQ JCR を変更します。これに対して、OSGi バンドル内から JCR API を使用して JCR を変更することもできます。詳しくは、Java Content Repository への CQ データの永続化を参照してください。

注意:

JCR API を使用するには、Java アプリケーションのクラスパスに jackrabbit-standalone-2.4.0.jar ファイルを追加します。この JAR ファイルは Java JCR API Web ページ(http://jackrabbit.apache.org/jcr-api.html)から取得できます。

注意:

JCR Query API を使用して Adobe CQ JCR へのクエリーを実行する方法については、JCR API を使用した Adobe Experience Manager データのクエリーを参照してください。

Repository インスタンスの作成

リポジトリに接続して接続を確立するには様々な方法がありますが、この開発向け記事では、org.apache.jackrabbit.commons.JcrUtils クラスに属する静的メソッドを使用します。このメソッドの名前は getRepository です。このメソッドは、Adobe CQ サーバーの URL を表す文字列パラメーターを受け取ります。例えば、http://localhost:4503/crx/server となります。

getRepository メソッドは、Repository インスタンスを返します。次に、このコード例に示します。

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

Session インスタンスの作成

Repository インスタンスは CRX リポジトリを表します。Repository インスタンスを使用して、リポジトリとのセッションを確立します。セッションを作成するには、Repository インスタンスの login メソッドを呼び出し、javax.jcr.SimpleCredentials オブジェクトを渡します。login メソッドは、javax.jcr.Session インスタンスを返します。

SimpleCredentials オブジェクトは、そのコンストラクタに次の文字列値を渡して作成します。

  • ユーザー名
  • 対応するパスワード

第 2 パラメーターを渡すときには、String オブジェクトの toCharArray メソッドを呼び出します。次のコードに、login メソッド(javax.jcr.Session インスタンスを返す)を呼び出す方法を示します。

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

Node インスタンスの作成

Session インスタンスを使用して、javax.jcr.Node インスタンスを作成します。Node インスタンスによってノードの操作を実行できます。例えば、新しいノードを作成できます。ルートノードを表すノードを作成するには、次のコード行のように Session インスタンスの getRootNode メソッドを呼び出します。

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

Node インスタンスを作成したら、別のノードの作成、ノードへの値の追加などのタスクを実行できます。例えば、次のコードでは 2 つのノードを作成し、2 つ目のノードに値を追加しています。

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

ノードの値の取得

ノードとその値を取得するには、Node インスタンスの getNode メソッドを呼び出して、ノードへの完全修飾パスを表す文字列値を渡します。前のコード例で作成したノード構造の場合、day ノードを取得するには、次のコードのように adobe/day を指定します。

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

Adobe CQ リポジトリ内でのノードの作成

次の Java コード例は、Adobe CQ に接続し、Session インスタンスを作成し、新しいノードを追加する Java クラスを表しています。ノードにデータ値を割り当て、そのノードの値とパスをコンソールに書き出します。Session での処理が完了したら、忘れずにログアウトしてください。

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

このコード例全体を実行してノードを作成した後、次の図に示すように、CRXDE Lite で新しいノードを確認できます。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー