Show Menu
トピック×

AEM JCR へのプログラムからのアクセス方法

Adobe Marketing Cloud に搭載されている Adobe CQ リポジトリ内にあるノードとプロパティを、プログラムから変更できます。CQ リポジトリにアクセスするには、Java Content Repository(JCR)API を使用します。Java JCR API を使用すれば、Adobe CQ リポジトリ内にあるコンテンツに対して、作成、置換、更新および削除(CRUD)の操作を実行できます。For more information about the Java JCR API, see https://jackrabbit.apache.org/jcr/jcr-api.html .
この開発向けの記事では、外部 Java アプリケーションから Adobe CQ JCR を変更します。これに対して、OSGi バンドル内から JCR API を使用して JCR を変更することもできます。For details, see Persisting CQ data in the Java Content Repository .
To use the JCR API, add the jackrabbit-standalone-2.4.0.jar file to your Java application’s class path. You can obtain this JAR file from the Java JCR API web page at https://jackrabbit.apache.org/jcr/jcr-api.html .
JCR Query API を使用して Adobe CQ JCR へのクエリーを実行する方法については、 JCR API を使用した Adobe Experience Manager データのクエリー を参照してください。

Repository インスタンスの作成

リポジトリに接続して接続を確立するには様々な方法がありますが、この開発向け記事では、 org.apache.jackrabbit.commons.JcrUtils クラスに属する静的メソッドを使用します。このメソッドの名前は getRepository です。このメソッドは、Adobe CQ サーバーの URL を表す文字列パラメーターを受け取ります。For example 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 します。
You create a SimpleCredentials object by using its constructor and passing the following string values:
  • ユーザー名
  • 対応するパスワード
2番目のパラメーターを渡す場合は、Stringオブジェクトのメソッドを呼び出 toCharArray します。 次のコードは、を返すメソッドを呼び login 出す方法を示しま javax.jcr.Sessioninstance す。
//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 ドを呼び出し、ノードへの完全修飾パスを表すstring値を渡します。 前述のコード例で作成したノード構造を考えてみます。 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クラスを表しています。 ノードにデータ値を割り当て、ノードの値とそのパスをコンソールに書き出します。 セッションが完了したら、必ずログアウトします。
/*
 * 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();
  }
 }
}

After you run the full code example and create the nodes, you can view the new nodes in the CRXDE Lite , as shown in the following illustration.