0

我在我的 play 应用程序中使用 Neo4j java驱动程序。

目前,我为每个控制器(即每个 http 调用)初始化一个新驱动程序。当自动关闭关闭方法运行时,它似乎阻塞了整个调用大约两秒钟。在不关闭驱动程序的情况下运行(显然是个坏主意)将我的测试从 25 秒缩短到 5 秒。

我确实怀疑我以错误的方式使用驱动程序,我想我应该使用一个驱动程序应用程序,但不知道如何。在play框架中使用java Neo4j驱动的正确方法是什么?

4

1 回答 1

1

Driver接口的 Javadoc指出:

驱动程序实现通常是线程安全的,充当会话创建的模板并托管连接池。所有配置和身份验证设置都由驱动程序保持不变。如果需要不同的设置,应该创建一个新的 Driver 实例。

驱动程序为每个远程 Neo4j 服务器维护一个连接池。因此,使用驱动程序的最有效方法是在整个应用程序中使用相同的实例。

因此,通常,您应该使用单个Driver实例。

共享同一个实例的一种方法是实现一个提供单例 Driver实例的工厂类。这是一个非常基本的线程安全示例:

class DriverFactory {
    private static Driver instance;
    public static synchronized Driver getDriver() {
        if (instance == null) {
            instance = GraphDatabase.driver(...);
        }
        return instance;
    }
}
于 2018-06-05T23:33:41.123 回答