Frage

Wie verwende ich RMI für die Herstellung einer Verbindung zum CRX-Repository von CQ 5.6.x aus einer externen Anwendung?

 

Antwort, Auflösung

1. Standardmäßig ist der RMI-Verbindungs-Listener nicht aktiviert; um ihn zu aktivieren, muss er konfiguriert werden.

 

Melden Sie sich in der OSGi-Konsole auf der Registerkarte „Konfiguration“ an: http://host:port/system/console/configMgr. Suchen Sie „Apache Sling JCR Repository RMI Registrar“. Der standardmäßige RMI-Port ist 1099. Sie müssen den Portwert erneut speichern oder ändern, um den RMI-Listener zu aktivieren.

 

2. Die folgende Ausgabe in eine error.log-Datei zeigt an, dass RMI bereit ist:

*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. Erstellen Sie eine Java-Klasse, die sich über RMI mit CRX verbindet. Nachfolgend finden Sie ein sehr einfaches Beispiel, wie Sie sich bei CRX anmelden und eine CRX-Sitzung erhalten:

 

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();

              }

       }

}

 

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie