首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JackRabbit Oak使用MongoMK创建存储库实例

如何使用JackRabbit Oak使用MongoMK创建存储库实例
EN

Stack Overflow用户
提问于 2014-10-09 19:06:29
回答 1查看 1.9K关注 0票数 3

我正在尝试创建一个Oak的JCR存储库,以便使用“”存储内容。

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

代码语言:javascript
复制
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

试图将“储存库”与"MongoMK“联系起来--这似乎是一场噩梦。

我试过

代码语言:javascript
复制
 Repository repo = new Jcr(kernel).createRepository(); //Error

我发现了类似的东西:[如何使用MicroKernel](https://stackoverflow.com/questions/25681933/how-to-create-repository-instance-in-jackrabbit-oak-using-microkernel)在JackRabbit Oak中创建存储库实例,这也没有帮助。

我的问题是,是否存在连接MongMK -仓库的问题??

试着用"NodeStore“。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-29 08:04:50

是的,这并没有很好的记录。下列措施应能发挥作用:

代码语言:javascript
复制
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();
    }
}

这现在也是记录在案了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26286129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档