Question
Comment utiliser RMI pour se connecter au référentiel CRX du CQ 5.6.x à partir d’une application externe ?
Réponse, résolution
1. Par défaut, un écouteur de connexion RMI n’est pas activé. Il faut le configurer afin de l’activer.
Connectez-vous à un onglet Configuration dans la console OSGi : http://host:port/system/console/configMgr. Recherchez « Apache Sling JCR Repository RMI Registrar ». Le port RMI par défaut est le 1099. Vous devez sauvegarder à nouveau ou modifier la valeur du port pour activer l’écouteur RMI.
2. La sortie suivante dans un fichier error.log indique que le RMI est prêt :
*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. Indiquez une classe Java qui se connecte au CRX par RMI. Voici un exemple très simple illustrant la connexion à CRX et l’obtention d’une session 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();
}
}
}
Accéder à votre compte