2016-02-28 26 views
1

我想在我的项目中使用橡树作为嵌入式。一开始我写了一个测试方法。在我的方法我使用相同的代码从这个例子这里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. 是否需要关闭存储库?

+0

当你的代码调用session.logout()并返回时会发生什么? – awd

+0

退出类型的注销()是void.I没有得到任何错误。我只是问是这样做的正确方法吗?因为没有任何回购关闭在长耳老虎橡木网站。 – enesaltinok

回答

1

我一定要叫createRepository()每一次或只为在第一时间,然后用另一种方法来连接存储库。

你必须创建一个首次的存储库,并使用其登录一样的,只要你保持库对象。如果您丢失了存储库,就像在关闭时一样,您将不得不从头开始。

是否正在关闭所需的存储库?

正如在documentation中给出的那样,我们需要这样做来释放资源并持续更改(如果有的话)。