質問

外部アプリケーションから CQ 5.6.x の CRX リポジトリに RMI を使ってどのように接続しますか?

 

回答、解決

1. デフォルトでは、RMI 接続のリスナーが有効になっていません。有効にするためには、設定を行う必要があります。

 

OSGi コンソール:http://host:port/system/console/configMgr の Configuration タブにログインします。「Apache Sling JCR Repository RMI Agent」を検索します。デフォルトの RMI ポートは 1099 です。RMI リスナーを有効にするには、ポート番号を再保存するか変更する必要があります。

 

2. 次のことが error.log ファイルへ出力されていると、RMI の準備ができていることを示します。

*INFO* [CM Event Dispatcher (Fire ConfigurationEvent: pid=org.apache.sling.jcr.jackrabbit.server.RmiRegistrationSupport)] org.apache.sling.jcr.registration Using RMI Registry port 1199

*INFO* [CM Event Dispatcher (Fire ConfigurationEvent: pid=org.apache.sling.jcr.jackrabbit.server.RmiRegistrationSupport)] org.apache.sling.jcr.registration Using private RMI Registry at 1199

*INFO* [CM Event Dispatcher (Fire ConfigurationEvent: pid=org.apache.sling.jcr.jackrabbit.server.RmiRegistrationSupport)] org.apache.sling.jcr.registration Repository bound to //server_name:1199/virtual-crx

 

3. RMI 経由で CRX に接続する Java クラスを書き込みます。以下は、CRX にログインして Crx セッションを取得する方法を示す非常に簡単な例です。

 

import org.apache.jackrabbit.rmi.client.ClientRepositoryFactory;

import javax.jcr.Repository;

import javax.jcr.Session;

import javax.jcr.SimpleCredentials;

public class CRXtoRMI {

       public static void main (String[] args){

              System.out.println("RMI to CRX Test Connection:");

              ClientRepositoryFactory factory = new ClientRepositoryFactory();

              Repository repository;

              String crxApplicationName = "virtual-crx";

              String repoUrl = "//localhost:1199/"+crxApplicationName;

              String workspace = "crx.default";

              String username = "admin";

              char [] password = "admin".toCharArray();

              try {

                     repository = factory.getRepository(repoUrl);

                     Session s = repository.login(new SimpleCredentials(username,password), workspace);

                     System.out.println("Workspace: " + s.getWorkspace().getName());

                     System.out.println("userId: "+s.getUserID());

              } catch (Exception e) {

                     e.printStackTrace();

              }

       }

}

 

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

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