【问题标题】:Using oak as embedded使用橡木作为嵌入式
【发布时间】:2016-06-11 16:43:10
【问题描述】:

我想在我的项目中使用橡木作为嵌入式。首先我编写了一个测试方法。在我的方法中,我在这里使用了与此示例相同的代码https://jackrabbit.apache.org/oak/docs/construct.html 代码运行得很好,但除非我关闭存储库,否则它不会终止:

((RepositoryImpl) repo).shutdown();

所以在我的项目中,不是第一次,而是每次我想连接到我调用的存储库时

mongoClient = new MongoClient(host, port);  
DB db = mongoClient.getDB(dbName);  
Builder builder = new DocumentMK.Builder(); 
builder.setMongoDB(db); 
ns = builder.getNodeStore();    
Oak oak = new Oak(ns);  
Jcr jcr = new Jcr(oak); 
repo = jcr.createRepository();  
try {   
    session = repo.login(new SimpleCredentials("admin", "admin".toCharArray()));    
} 
catch (LoginException e) {
    ...
}

到最后

session.logout(); 
((RepositoryImpl) repo).shutdown(); 
ns.dispose(); 
mongoClient.close();
  1. 我必须每次调用 createRepository() 还是第一次调用,然后使用其他方法连接存储库。

  2. 是否需要关闭存储库?

【问题讨论】:

  • 当你的代码调用 session.logout() 并返回时会发生什么?
  • logout() 的返回类型是无效的。我没有收到任何错误。我只是问这是正确的做法吗?因为在 jackrabbit 橡树网站中没有任何 repo 关闭。

标签: jackrabbit jackrabbit-oak


【解决方案1】:

我必须每次调用 createRepository() 还是第一次调用,然后使用其他方法连接存储库。

如果您保留存储库对象,您将必须第一次创建存储库并在其上使用相同的登录。万一您丢失了存储库,例如关闭,您将不得不从头开始。

是否需要关闭存储库?

documentation 中所述,我们需要这样做以释放资源并保持更改(如果有)。

【讨论】:

    猜你喜欢
    • 2021-05-30
    • 2017-08-11
    • 1970-01-01
    • 2017-10-06
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    相关资源
    最近更新 更多