Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Neo4j驱动器正在运行_Java_Neo4j_Playframework_Connection Pooling_Autocloseable - Fatal编程技术网

Java Neo4j驱动器正在运行

Java Neo4j驱动器正在运行,java,neo4j,playframework,connection-pooling,autocloseable,Java,Neo4j,Playframework,Connection Pooling,Autocloseable,我在我的play应用程序中使用了Neo4j java 目前,我为每个控制器初始化一个新的驱动程序,即为每个http调用初始化一个新的驱动程序。当autoclosable close方法运行时,它似乎会将整个调用阻塞大约两秒钟。在没有关闭驱动程序的情况下运行显然是一个坏主意,它将我的测试时间从25秒减少到了5秒 我确实怀疑我用错了驱动程序,我想我应该在整个应用程序中使用一个驱动程序,但我不知道如何使用。在play框架中使用java Neo4j驱动程序的正确方法是什么?接口的Javadoc状态: 驱

我在我的play应用程序中使用了Neo4j java

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

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

接口的Javadoc状态:

驱动程序实现通常是线程安全的,充当模板 用于会话创建和承载连接池。所有配置和 身份验证设置由驱动程序保持不变。应该 如果需要不同的设置,则应创建新的驱动程序实例 创造

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

因此,一般来说,您应该使用单个驱动程序实例

共享同一实例的一种方法是实现一个提供驱动程序实例的工厂类。下面是一个非常基本的线程安全示例:

class DriverFactory {
    private static Driver instance;
    public static synchronized Driver getDriver() {
        if (instance == null) {
            instance = GraphDatabase.driver(...);
        }
        return instance;
    }
}
正是我想要的。