不关闭环境或EntityStore是否安全?

时间:2018-08-20 16:19:18

标签: java xodus

我想问一问不关闭环境是否安全?

    final PersistentEntityStore entityStore = manager.getPersistentEntityStore(xodusRoot, instance);
    final List<User> users = new LinkedList<>();
    try {

    } finally {
       //entityStore.close
    }

不关闭环境的原因是,此示例代码在Servlet环境中使用,在该环境中我们实现了一种Sigleton查找表(地图)来保存Environments和EntiyStores,如果我们在下一个HTTP POST中将其关闭,请求将收到“环境已关闭”错误,因此我们不会将其关闭。

我们在此处实现Lookup表(映射)的原因是为了防止servlet请求出现数据库锁定问题,尤其是在多个并发请求上。

这样做安全吗?还是这甚至是正确的方法?

1 个答案:

答案 0 :(得分:2)

通常,不关闭Environment或EntityStore是安全的。在大多数情况下,如果JVM退出,未关闭的数据库将在没有数据丢失的情况下打开。在最坏的情况下,数据库将恢复为最新的有效快照,就像在系统/硬件故障之后一样。但是,未关闭的数据库可能会占用一些额外的物理空间(GC会受到影响),从而导致性能下降。您可以在销毁Servlet时关闭查找表中的所有Environments / EntityStores。