如何连接 - 断开 - 重新连接到Neo4j服务器实例
问题描述:
我使用本地Neo4j(2.1.12)服务器实例和Neo4j Java API从Java程序(jdk 8.0)中访问图形数据库(gdb) _05)。如何连接 - 断开 - 重新连接到Neo4j服务器实例
我只是想实现以下工作流程:
- 从Java程序连接到GDB从gdb的
- 断开
- 与另一个进程,连接到同一个GDB
- 断开从这个过程gdb
- 再次连接到gdb与Java程序
现在,第5点不起作用!
对于 '连接' 的Java程序我用”
gdbFactory = new GraphDatabaseFactory();
gdbService = gdbFactory.newEmbeddedDatabase(gdbPath);
gdbEngine = new ExecutionEngine(gdbService);
对于 '断开' 从gdb的Java程序的GDB我用
GraphDatabaseService.shutdown()
但这种方法似乎敲定在某种程度上,我不能再连接到它的gdb。
在已经连接,断开并再次连接我得到一个异常,告诉我:
这个数据库是关机!
所以,我的问题是:
什么是连接常见的方式 - 断开 - 重新连接到Neo4j的GDB?是否有替代从上面的关机方法?
答
您必须重新创建graphdatabaseService变量的新实例。
graphDatabaseService = new GraphDatabaseFactory().newEmbeddedDatabase(PATH);
或者使用Neo4j服务器并远程连接它们,您不必“断开连接”,但它在整个网络中将会变慢。
答
这是一个测试,证明你正在尝试做什么(以及迈克尔所建议的)能正常工作。
它创建一个节点,然后关闭数据库,然后再次启动并验证该节点在那里。
@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();
}
这就是我正在做的。但是,当我进一步调用数据库我得到一个异常,说:'这个数据库已关闭!' – 2014-11-22 01:29:17
你有任何其他的帮助,我..我确实需要一个解决方案迫切... – 2014-11-22 16:09:03