2012-04-20 33 views
3

我正在使用彈簧&休眠。我的應用程序有3個模塊。每個模塊都有特定的數據庫。所以,應用程序處理3個數據庫。在服務器啓動時,如果任何一個數據庫關閉,則服務器不啓動。 我的要求是,即使其中一個數據庫關閉,服務器應該啓動,因爲其他模塊的數據庫已啓動,用戶可以在其他兩個模塊上工作。請建議我如何實現這一目標? 我使用spring 3.x和hibernate 3.x.此外,我正在使用c3p0連接池。應用服務器是Tomcat如何使App服務器即使在數據庫關閉的情況下啓動?

謝謝!

+0

什麼是粗體文本? – adarshr 2012-04-20 10:42:22

+0

你試過了嗎?在連接數據庫之前,您不知道數據庫是否處於關閉狀態,因此除非c3p0預先驗證其所有連接,否則直到您嘗試使用它時纔會知道某個特定數據庫處於關閉狀態。那時你的應用程序已經開始了。 – beny23 2012-04-20 10:43:40

+0

嗨貝尼,謝謝你的回覆。如果c3p0的預失效失敗,我的意思是如果其中一個數據庫關閉,服務器將無法正確啓動?如果我錯了,請糾正我。謝謝! – user1016403 2012-04-20 10:52:32

回答

3

我會使用@Configuration註釋來創建一個對象,它是構建bean並處理數據庫關閉場景的工作。在構建bean時,測試數據庫連接是否已啓動,如果沒有,則返回bean的虛擬版本。這將被注入相關對象。這個虛擬bean的工作是在調​​用時真正拋出一個不可用的異常。如果您的應用程序可以處理某些功能的這些不可用例外情況,並在使用其他數據源時繼續運行時顯示給用戶,則應該沒問題。

@Configuration 
public class DataAccessConfiguration { 

    @Bean 
    public DataSource dataSource() { 
    try { 
    //create data source to your database 
    .... 
    return realDataSource; 
    } catch (Exception) { 
    //create dummy data source 
    .... 
    return dummyDataSource; 
    } 
    } 
} 
+0

嗨BruceLowe,謝謝你的回覆。一些如何使應用程序服務器即使其中一個數據庫已啓動。但一旦用戶開始使用其他模塊,如果數據庫已啓動,並且用戶試圖訪問它,如何才能爲該數據庫配置池?謝謝 – user1016403 2012-04-23 14:40:31

1

這本來是一個註釋:

你試過了嗎?在連接數據庫之前,您不知道數據庫是否處於關閉狀態,因此除非c3p0預先驗證其所有連接,否則直到您嘗試使用它時纔會知道某個特定數據庫處於關閉狀態。那時你的應用程序已經開始了。

相關問題