2011-05-02 86 views
8

我需要使用远程长耳兔仓库。我用下面的代码连接到本地资源库:如何访问远程jackrabbit存储库?

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

,这适用于本地资源库,但我该怎么办柜面远程兔崽子呢?

回答

4

您是否尝试过使用它?

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

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

这应该在远程存储库公开RMI服务时起作用。请注意,RMI访问通常被认为很慢。

有关访问远程存储库的更多信息,请参阅here

2

我们使用Sling提供的REST界面来远程访问我们的存储库。

+0

我们怎样才能通过吊索访问独立rackrabbit服务器,而不使用其发射台。我相信它应该是配置的改变。但是哪里?谢谢。 – Bee 2012-06-03 07:56:52

+2

我不记得我是如何完成这个的。我们不再使用Sling。我认为我们发现API太混乱/限制,或者它没有我们正在寻找的一些功能(也许这是加密文件的能力?)。我编写了自己的简化REST API来调用Jackrabbit API。祝你好运! – Vinnie 2012-06-04 13:33:50

+0

@Vinnie Hi Vinnie,你能分享一下你为访问远程仓库而写的其他信息吗?它比RMI或webdav更快吗? – Gandhi 2017-08-21 08:02:57

4

另一种选择是的WebDav,这应该比RMI速度是有点,虽然速度比不上原生界面:

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

我现在正在使用两者。在Jackrabbit中,WebDAV没有比RMI更快的方式。它在哪里说的?另外WebDAV不提供几乎相同数量的功能。 – EJP 2012-09-09 07:44:25

+0

你好,EJP,我想更新一个节点,但RMI和webdav失败。你能提供一个关于你如何做的例子吗? – 2012-12-04 22:19:20

+0

您需要将正确的依赖项添加到项目中。要使用webdav连接器,您需要将jackrabbit-jcr2dav添加到您的类路径中:http://search.maven.org/remotecontent?filepath=org/apache/jackrabbit/jackrabbit-jcr2dav/2.6.0/jackrabbit-jcr2dav-2.6 .0.jar – ilikeorangutans 2013-04-03 17:17:44