首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何连接-断开连接-重新连接到Neo4j服务器实例

如何连接-断开连接-重新连接到Neo4j服务器实例
EN

Stack Overflow用户
提问于 2014-11-22 01:00:22
回答 2查看 1.3K关注 0票数 0

我使用本地Neo4j (2.1.12)服务器实例和Neo4j Java从java程序(jdk 8.0_05)中访问图形数据库(gdb)。

我只想实现以下工作流:

  1. 从Java程序连接到gdb
  2. 断开与gdb的连接
  3. 连接到同一个gdb的另一个进程。
  4. 从此过程中断开与gdb的连接
  5. 再次用Java程序连接到gdb

现在,第5点不起作用了!

为了将Java程序“连接”到我使用的gdb,

代码语言:javascript
复制
gdbFactory = new GraphDatabaseFactory();
gdbService = gdbFactory.newEmbeddedDatabase(gdbPath);
gdbEngine = new ExecutionEngine(gdbService);

为了“断开”Java程序与gdb的连接,我使用

代码语言:javascript
复制
GraphDatabaseService.shutdown()

但是,这个方法似乎以某种方式最终完成了gdb,因此我无法再连接到它。

在连接、断开和再次连接之后,我得到了一个异常,它告诉我:

这个数据库关闭了!

所以,我的问题是:

连接-断开连接-重新连接到Neo4J gdb的常见方式是什么?除了上面的关机方法之外,还有别的选择吗?

EN

回答 2

Stack Overflow用户

发布于 2014-11-22 01:25:18

您必须重新创建graphdatabaseService变量的新实例。

代码语言:javascript
复制
graphDatabaseService = new GraphDatabaseFactory().newEmbeddedDatabase(PATH);

或者,使用Neo4j服务器并远程连接--它们不需要“断开”,但在整个网络中会慢一些。

票数 1
EN

Stack Overflow用户

发布于 2014-11-23 21:09:08

这里有一个测试,可以证明你想要做的事情(以及Michael的建议)是正确的。

它创建一个节点,然后关闭数据库,然后再次启动它,并验证节点是否存在。

代码语言:javascript
复制
@Test
public void startStopRestart() {
    GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabase("/tmp/db");

    try (Transaction tx = db.beginTx()) {
        Node node = db.createNode();
        node.setProperty("name", "First Node");
        tx.success();
    }

    db.shutdown();

    db = new GraphDatabaseFactory().newEmbeddedDatabase("/tmp/db");

    try (Transaction tx = db.beginTx()) {
        assertEquals("First Node", db.getNodeById(0).getProperty("name"));
    }

    db.shutdown();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27072879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档