Mongodb 如何使用MongoMK在JackRabbit Oak中创建存储库实例
我试图创建一个Oak的JCR存储库,用“ApacheOak overMongoDB”存储内容 (我完全不知道) 这是我们一直在做的Mongodb 如何使用MongoMK在JackRabbit Oak中创建存储库实例,mongodb,jackrabbit,Mongodb,Jackrabbit,我试图创建一个Oak的JCR存储库,用“ApacheOak overMongoDB”存储内容 (我完全不知道) 这是我们一直在做的 MongoClient connection = new MongoClient("127.0.0.1", 27017); DB db = connection.getDB("test"); MongoMK.Builder m = new MongoMK.Builder();
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”——这似乎是一场噩梦
我已经试过了
Repository repo = new Jcr(kernel).createRepository(); //Error
我发现了一些类似的东西,也没用
我的问题是,是否有连接MongMK-Repository的方法
请注意-尝试使用“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();
}
}
现在也是这样