2011-05-02 12 views
8

Necesito trabajar con el repositorio remoto de jackrabbit. Yo uso siguiente código para conectarse al repositorio local:¿Cómo acceder al repositorio remoto de jackrabbit?

Repository repository = new TransientRepository(); 
Session session = repository.login(new SimpleCredentials("username", "password".toCharArray())); 

y esto funciona para el repositorio local, pero lo que puedo hacer en caso de la liebre a distancia?

Respuesta

4

¿Has probado a usar esto?

import javax.jcr.Repository; 
import org.apache.jackrabbit.commons.JcrUtils; 

Repository repository = JcrUtils.getRepository("http://$SERVER_ADDRESS:$PORT/$CONTEXT"); 

Eso debería funcionar si el repositorio remoto está exponiendo los servicios de RMI. Tenga en cuenta que, en general, se considera que el acceso RMI es bastante lento.

Encontrará más información sobre cómo acceder a los repositorios remotos here.

2

Estamos utilizando la interfaz REST proporcionada por Sling para acceder de forma remota a nuestro repositorio.

+0

¿Cómo podemos acceder a un servidor rackrabbit independiente a través de la honda sin necesidad de utilizar su plataforma de lanzamiento . Creo que debería ser un cambio en la configuración. ¿Pero donde? Gracias. – Bee

+2

No recuerdo cómo lo logré. No estamos usando Sling por más tiempo. Creo que encontramos la API demasiado confusa/limitante o tal vez no tenía alguna funcionalidad que estábamos buscando (¿tal vez fue la capacidad de encriptar archivos?). Escribí mi propia API REST simplificada para llamar a la API de Jackrabbit. ¡Buena suerte! – Vinnie

+0

@Vinnie Hola Vinnie, ¿podrías compartir más información sobre el resto de las cosas que escribiste para acceder al repositorio remoto? ¿Es más rápido que RMI o webdav? – Gandhi

4

Otra opción es WebDav, que se supone que es algo más rápido que RMI, aunque no tan rápido como la interfaz nativa:

import javax.jcr.Repository; 
import javax.jcr.Session; 
import javax.jcr.SimpleCredentials; 

import org.apache.jackrabbit.commons.JcrUtils; 

public class main { 

/** 
* @param args 
*/ 
public static void main(String[] args) throws Throwable{ 
    String url = "http://localhost:8080/server"; 
    System.out.println("Connecting to " + url); 
    Repository repository = JcrUtils.getRepository(url); 
    SimpleCredentials creds = new SimpleCredentials("admin", 
      "admin".toCharArray()); 
    Session jcrSession = repository.login(creds, "default"); 
    System.out.println("Login successful, workspace: " + jcrSession.getWorkspace()); 
+0

Estoy usando ambos en este momento. No hay forma de que WebDAV sea más rápido que RMI en Jackrabbit. ¿Dónde dice eso? Además, WebDAV no proporciona casi la misma cantidad de funcionalidad. – EJP

+0

Hola, EJP, me gustaría actualizar un nodo, pero RMI y webdav fallaron. ¿Puedes dar un ejemplo de cómo lo haces? –

+0

Tendrá que agregar las dependencias correctas al proyecto. Para usar el conector webdav, debe agregar jackrabbit-jcr2dav a su classpath: http://search.maven.org/remotecontent?filepath=org/apache/jackrabbit/jackrabbit-jcr2dav/2.6.0/jackrabbit-jcr2dav-2.6 .0.jar – ilikeorangutans

Cuestiones relacionadas