2013-02-20 173 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

相關問題