mongodb - 如何使用 MongoMK 在 JackRabbit Oak 中创建存储库实例

标签 mongodb jackrabbit

我正在尝试创建一个 Oak 的 JCR 存储库来存储“Apache Oak over MongoDB”的内容。

(我完全不知道) 这是我一直在做的事情。

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 - Repository 的方法??

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

最佳答案

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

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 .

关于mongodb - 如何使用 MongoMK 在 JackRabbit Oak 中创建存储库实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26286129/

相关文章:

java - mixinproperties 的 JCR 查询

java - DMS的JCR与JPA:性能,优点,缺点

node.js - 在 Node.js 中从 MongoDB 获取数据时出错

node.js - Mongoose 在docker中连接到mongo

node.js - lwip.open 在 mongoose findOne 之后不起作用

java - Apache Jackrabbit,通过WebDAV协议(protocol)连接到本地主机

javascript - 指令调用后加载来自 MongoDB 的数据

mongodb - 在MongoDB中查询 map 大小

java - EJB 3.1 session Bean 中的 Jackrabbit