在建立RavenDB连接时,哪种方法是“昂贵的”

时间:2018-02-22 20:06:25

标签: jax-rs ravendb

我在我的JAX REST服务中使用RavenDB,我想将数据库连接设置代码从服务方法移到自己的ServletContextListener中,这样它只能在Tomcat服务器启动时执行一次;之后,每个服务调用应由已存在的连接处理。 (This文章描述了如何设置连接池 - 但我不确定它是否仍适用,已有9年......)

关于设置数据库连接的“昂贵”操作,它们是哪些 - 用于:

try (DocumentStore store = ravenDBStore)
                {
                    store.parseConnectionString(ravenLocation);
                    store.initialize();
                    IDocumentSession currentSession = store.openSession();
                    ...
}

我怀疑它是initialize()方法,这种方法很昂贵,应该从服务调用代码中移出;怎么样openSession()?是否 - 甚至在理论上 - 可以在REST方法的服务调用之间共享/重用? BTW,this article是我要重新计算数据库连接代码的原因。

谢谢!

1 个答案:

答案 0 :(得分:1)

DocumentStore应该被视为一个单例(每个应用程序一个实例), 阅读this。 Initialize方法创建与服务器的连接,然后在初始化之前,您无法打开新会话。 然后移动DocumentStore的创建及其初始化。

我建议您根据请求打开会话,考虑到这是一项服务,无论如何打开新会话都不会对性能产生重大影响