Wie verwende ich RMI, um CRX von einer externen Anwendung zu verbinden?

Frage

Wie kann ich mit RMI eine Verbindung zu CRX aus einer externen Anwendung herstellen?

Antwort, Auflösung

Der RMI-Verbindungslistener wird in web.xml der crx-Webanwendung konfiguriert. In einer Standardinstallation wird die WAR-Datei nach crx_install_dir/server/runtime/0/_crx/ extrahiert. Sie finden web.xml unter crx_install_dir/server/runtime/0/_crx/WEB-INF/webxml.

Standardmäßig ist RMI nicht aktiviert. Um es zu aktivieren, müssen Sie Folgendes tun:

  1. Bearbeiten Sie web.xml und kommentieren Sie die folgenden Zeilen unter Repository Servlet aus
    <init-param> <param-name>rmi-port</param-name> <param-value>1234</param-value> <description> Der RMI-Port für die Registrierung des Repositorys in dem RMI-Register. Wenn gleich 0 ist, wird der Standardport verwendet. Lassen Sie diesen Parameter aus, um den RMI-Server vollständig zu deaktivieren. </description> </init-param>
    

  2. Starten Sie CRX neu und stellen Sie sicher, dass Ihr Server den definierten Port überwacht (Sie können den Unix-Befehl: lsof -i verwenden)
  3. Schreiben Sie eine Java-Klasse, die über RMI eine Verbindung zu CRX herstellt. Nachfolgend ist ein sehr einfaches Beispiel angeführt, das zeigt, wie man sich am CRX anmeldet und eine Crx-Sitzung erhält:
    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(); } } }
    

Hinweis

Damit diese Funktion funktioniert, müssen Sie die entsprechenden jar-Dateien verwenden.

\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

 Adobe

Schneller und einfacher Hilfe erhalten

Neuer Benutzer?