2013-02-17 97 views
1

在我的應用程序體系結構中,我有兩臺數據庫服務器主數據庫和輔助數據庫服務器(副本服務器)。以編程方式檢查服務器的可用性

在我的Java代碼,我想提出與數據庫的連接,現在獲取的一些數據我想是我會給這兩個數據庫服務器的IP地址在我的代碼,將檢查其數據庫服務器可以訪問,將與連接只要。但我沒有得到如何實現它,一種方法是嘗試遠程登錄,但不是一個好的選擇,因爲我想禁用應用程序服務器上的Telnet出於某種原因。

有沒有其他的最好的方法來做到這一點?

回答

4

就我個人而言,我只是嘗試連接(使用標準數據庫類)並處理連接失敗時的異常。

即使您最初確認連接性,也無法防止該測試與您實際嘗試使用數據庫之間發生網絡問題。

2

您可以嘗試ping兩臺主機並使用響應的主機。這是一個示例程序。

 InetAddress address = InetAddress.getByName("172.16.2.0"); 

     // Try to reach the specified address within the timeout 
     // periode. If during this periode the address cannot be 
     // reach then the method returns false. 
     boolean reachable = address.isReachable(10000); 

     System.out.println("Is host reachable? " + reachable); 

對於更詳細的程序,請參閱Java中的此Ping program example

+0

我需要一個特定的端口號,因爲它有可能是服務器可達,但數據庫沒有在指定的端口上運行。 – pyus13 2013-02-17 19:41:30

+0

@ pyus13您無法使用'isReachable'來ping特定的端口。你需要測試一個到套接字的連接才能做到這一點。參考[這個答案](http://stackoverflow.com/a/14906123/1247781)。 – Vulcan 2013-02-18 00:11:08

+0

好@Vulcan謝謝。 – pyus13 2013-02-19 18:39:32

相關問題