有没有办法确定neo4j数据库是否已关闭?

有没有办法确定neo4j数据库是否已关闭?,neo4j,Neo4j,标题说明了一切。我知道你可以在数据库上调用graphDb.shutdown(),它说你应该在那之后删除所有引用,但是有没有一种编程方法来确定图形数据库的状态,看看它是否关闭了?我想你能得到它的唯一方法,就是使用反射。例如,对于EmbeddedGraphDatabase,您可以这样获得它: final Field life = InternalAbstractGraphDatabase.class.getDeclaredField("life"); life.setAccessible(true)

标题说明了一切。我知道你可以在数据库上调用
graphDb.shutdown()
,它说你应该在那之后删除所有引用,但是有没有一种编程方法来确定图形数据库的状态,看看它是否关闭了?

我想你能得到它的唯一方法,就是使用反射。例如,对于EmbeddedGraphDatabase,您可以这样获得它:

final Field life = InternalAbstractGraphDatabase.class.getDeclaredField("life");
life.setAccessible(true);
System.out.println(((LifeSupport) life.get(db)).getStatus());

在linux服务器控制台中,您可以使用以下命令:(也可以在windows上使用)

解决方法在REST中使用任何更高级别的语言时,您可能只需要
curl
wget
实例通常运行的特定url。如果您没有收到任何数据,您就知道它已关闭。

试试看

使用此方法检查数据库是否处于可用状态。如果数据库当前未处于可用状态,您可以提供一个超时以等待它变为可用状态。如果数据库已关闭,则立即返回false。


我相信超时是以毫秒为单位的。

我希望有一种更为编程的方式,因为我们已经嵌入了这个数据库。请注意,这不适用于
高可用性GraphDatabase
,您必须在
HighlyAvailableGraphDatabase
上获取声明的字段,而不是
InternalAbstractGraphDatabase
。这实际上不起作用。在HA环境中,如果发生主/从切换,即使DB处于稳定状态,life get也会标记为
SHUTDOWN
。这正是我想要的,很高兴看到他们最终添加了它。
neo4j-community-1.9.M04/bin$ ./neo4j status
Neo4j Server is not running