質問

RMI を使用して外部アプリケーションから CRX に接続するにはどうすればいいのでしょうか?

回答、解決策

RMI 接続リスナーは crx Web アプリケーションの web.xml に設定されます。デフォルトのインストールでは、WAR ファイルは crx_install_dir/server/runtime/0/_crx/ に抽出されます。web.xml は crx_install_dir/server/runtime/0/_crx/WEB-INF/webxml にあります。

デフォルトでは、RMI は有効になっていません。有効にするには:

  1. web.xml を編集し、レポジトリサーブレットの次の行をコメントアウトします
    <init-param> <param-name>rmi-port</param-name> <param-value>1234</param-value> <description> RMI レジストリのリポジトリを登録する際の RMI ポート。もし値が0の場合は、デフォルトのポートが使用されます。RMI サーバーを完全に無効にするには、このパラメーターを省略します。</description> </init-param>
    

  2. CRX を再起動し、定義済ポートでサーバーがリッスンしていることを確認します(Unix コマンド「lsof -i」を使用)
  3. RMI を使用して CRX に接続する java クラスを記述します。CRX にログインして、Crx セッションを取得する方法を示す最も簡単な例を次に示します。
    import javax.jcr.Repository; import javax.jcr.Session; import javax.jcr.SimpleCredentials; import org.apache.jackrabbit.rmi.client.ClientRepositoryFactory; /* * Simple CRX RMI test class that connects to the CRX and logs in as admin * */ public class RMITest { public static void main (String[] args){ ClientRepositoryFactory factory = new ClientRepositoryFactory(); Repository repository; String crxApplicationName = "crx"; String repoUrl = "//localhost:1234/"+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("userId:"+s.getUserID()); } catch (Exception e) { e.printStackTrace(); } } }
    

ノート

この機能を使用するには、次の JAR ファイルが必要です。

\crx-quickstart\server\lib\container\jcr-*.*.jar

\crx-quickstart\server\lib\server\slf4j-log4j12-*.*.jar

\crx-quickstart\server\lib\server\log4j-*.*.*.jar

\crx-quickstart\server\runtime\0\_crx\WEB-INF\lib\jackrabbit-jcr-rmi-*.*.*.jar

\crx-quickstart\server\runtime\0\_crx\WEB-INF\lib\crx-rmi-*.*.*.jar

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

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