2014-10-09 42 views
2

我正在尝试创建一个Oak的JCR资源库来存储“Apache Oak over MongoDB”的内容。如何使用MongoMK在JackRabbit Oak中创建资源库实例

(我绝对不知道) 这是什么iv'e一直在做。

MongoClient connection = new MongoClient("127.0.0.1", 27017); 
        DB db = connection.getDB("test"); 
        MongoMK.Builder m = new MongoMK.Builder(); 
        MongoMK kernel = m.setMongoDB(db).open(); 
        Repository repo = new Jcr().createRepository(); 
        session = repo.login(); // Error javax.jcr.NoSuchWorkspaceException 

正试图将“Repository”链接到“MongoMK” - 这看起来像一场噩梦。

我曾尝试做

Repository repo = new Jcr(kernel).createRepository(); //Error 

我发现类似的东西@ [How to create repository instance in JackRabbit Oak using MicroKernel,这并没有帮助。

我的问题是,有无论如何连接MongMK - 存储库?

P.S - 尝试使用“NodeStore”。

回答

2

是的,这没有很好的记录。以下应该工作:

import javax.jcr.Node; 
import javax.jcr.Repository; 
import javax.jcr.Session; 
import org.apache.jackrabbit.oak.Oak; 
import org.apache.jackrabbit.oak.plugins.document.DocumentMK; 
import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore; 
import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider; 
import com.mongodb.DB; 
import com.mongodb.MongoClient; 

public class Test { 
    public static void main(String... args) throws Exception { 
     DB db = new MongoClient("127.0.0.1", 27017).getDB("test2"); 
     DocumentNodeStore ns = new DocumentMK.Builder(). 
       setMongoDB(db).getNodeStore(); 
     Repository repo = new Jcr(new Oak(ns)) 
       .with(new OpenSecurityProvider()) 
       .createRepository(); 
     Session session = repo.login(); 
     Node root = session.getRootNode(); 
     if (root.hasNode("hello")) { 
      Node hello = root.getNode("hello"); 
      long count = hello.getProperty("count").getLong(); 
      hello.setProperty("count", count + 1); 
      System.out.println("found the hello node, count = " + count); 
     } else { 
      System.out.println("creating the hello node"); 
      root.addNode("hello").setProperty("count", 1); 
     } 
     session.save(); 
     session.logout(); 
     ns.dispose(); 
    } 
} 

这也是documented

相关问题