Java Neo4j跨类获取多个数据库实例

Java Neo4j跨类获取多个数据库实例,java,jakarta-ee,neo4j,Java,Jakarta Ee,Neo4j,我使用Neo4j存储节点,需要跨类访问Neo4j数据库,这些类都应该能够并发连接到数据库 我目前使用 public void setUp() { //deleteFileOrDirectory(new File(FILESYSTEM_DB)); graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(FILESYSTEM_DB); indexManager = graphDb

我使用Neo4j存储节点,需要跨类访问Neo4j数据库,这些类都应该能够并发连接到数据库

我目前使用

    public void setUp()
    {
        //deleteFileOrDirectory(new File(FILESYSTEM_DB));
        graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(FILESYSTEM_DB);
        indexManager = graphDb.index();
        index = indexManager.forNodes("indexNodes");
        registerShutdownHook();
    }
为了创建数据库并连接到它,下一次当另一个类尝试运行类似的方法(或者同一个类的另一个实例调用相同的setUp()方法)时,我得到了一个非常合理的答案

“获取锁时出错(org.neo4j.kernal.StoreLockException)”。


如何检查数据库是否正在运行,如果没有调用newEmbeddedDatabase(FILESYSTEM_DB),如何连接到正在运行的实例?

确保变量
graphDb
和其他变量不是本地变量,而是某个类的实例的字段
Neo4jConnection
。然后,创建该类的单个实例(singleton),运行一次
setUp()
,并在需要访问数据库时使用该连接。如何管理这个单例依赖于您的环境(您使用Spring吗?)。最简单的方法是使用一个静态变量引用该单例。阅读和其他带有

标记的讨论,我正在使用JSF,并按照您的建议使用了单例。然而,我想找到一种方法来启动一个服务器实例,并让所有客户端通过URI连接到它,而不使用单例。您指的是哪种客户端?web服务器中的浏览器或客户端连接对象?浏览器只能通过URI连接,并且无论如何都不能直接访问单例。