2013-02-20 92 views

回答

2

尝试GraphDatabaseService.isAvailable(long timeout)

“使用此方法来检查数据库处于可用状态。如果数据库当前不处于可用状态,你可以提供一个超时等待它变得如此。如果数据库已关闭该立即返回false。

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

+0

这正是我正在寻找的东西,很高兴看到他们最终添加了它。 – Nicholas 2014-06-24 20:35:38

1

我认为唯一可以得到它的方法就是使用反射。对于例如一个EmbeddedGraphDatabase,你可以这样说:

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

请注意,这对'HighlyAvailableGraphDatabase'不起作用,您必须在'HighlyAvailableGraphDatabase'而不是'InternalAbstractGraphDatabase'上获取声明的字段。 – Nicholas 2013-02-22 17:42:36

+0

这实际上工作不正常。当处于高可用性环境时,如果发生主/从交换,即使数据库处于稳定状态,生命也会被标记为“关闭”。 – Nicholas 2013-02-28 21:35:26

-1

当在Linux服务器控制台,你可以使用这个命令:使用任何高级语言时(或者在Windows上,太)

neo4j-community-1.9.M04/bin$ ./neo4j status 
Neo4j Server is not running 

解决方法在REST中,您可能只需简单地使用curlwget实例通常运行的特定网址。如果你没有收到任何数据,你就会知道它已经关闭。

+0

我希望有更多的编程方式,因为我们嵌入了这个数据库。 – Nicholas 2013-02-21 15:47:20

相关问题