Pregunta

¿Usar RMI para conectarme a CRX desde una aplicación externa?

Respuesta y resolución

El gestor de conexión RMI se configura en web.xml de la aplicación web crx. En una instalación predeterminada, el archivo war se extrae a crx_install_dir/server/runtime/0/_crx/. Puede encontrar web.xml en crx_install_dir/server/runtime/0/_crx/WEB-INF/webxml.

Por defecto, RMI no está habilitado, para habilitarlo es necesario:

  1. Edite web.xml y comente las siguientes líneas en Repositorio Servlet
    <init-param> <param-name>rmi-port</param-name> <param-value>1234</param-value> <description> El puerto RMI para registrar el repositorio en el Registro RMI. Si es igual a 0, se utiliza el puerto predeterminado. Omita este parámetro para desactivar por completo el servidor RMI. </description> </init-param>
    

  2. Reinicie CRX y asegúrese de que su servidor está escuchando en un puerto definido (puede usar el comando unix: lsof -i)
  3. Escribe una clase java que se conecte a CRX a través de RMI. A continuación se muestra un ejemplo muy sencillo que muestra cómo iniciar sesión en el CRX y obtener una sesión de 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(); } } }
    

Nota

Asegúrese de tener los siguientes archivos jar en su lugar para que esto funcione,

\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