2009-10-23 50 views
1

我正在運行Spring + hibernate 3 + c3p0。啓動後,如果數據庫關閉,大約10分鐘後會拋出異常。在此之前,程序被阻止......我不包括spring xml,hibernate配置等,因爲它是一個相當普遍的問題,如果存在解決方案,它必須是一個標準的直接方式。如果沒有,我可以修剪關鍵的代碼和配置,並粘貼在這裏。有人知道這件事嗎?提前致謝。當數據庫關閉時,Hibernate需要10分鐘纔會拋出異常


澄清:

我本質上需要的是知道是否有在C3P0或休眠狀態,甚至是春天的包裝,圍繞DriverManager.setLoginTimeout()函數。或者爲我提供此功能的功能。包裝可以通過設置或其他東西。我只想得到一個異常,如果我沒有連接到數據源的X秒,無論原因(套接字,數據庫,惡劣的天氣)。我想找個地方來設置這個X.更糟糕的是,我使用的驅動程序Oracle驅動程序沒有實現setLoginTimeout(),所以我不能直接使用它。我已經意識到沒有辦法解決它,但手動產生我自己的計時器線程。任何人都可以驗證上述情況?非常感謝。

回答

1

這很可能與Hibernate/Spring本身無關;數據庫連接池負責處理連接。

  1. 您的C3P0設置是什麼?
  2. 您使用的是什麼數據庫/驅動程序?是否有任何驅動程序特定的設置導致驅動程序本身在報告錯誤之前等待/重試?
  3. 「數據庫關閉」是指「完全關閉」嗎?或者這可能是由某種套接字超時造成的?

更新(基於下面OP澄清):

DriverManager.setLoginTimeout()不使用Oracle驅動程序。 OracleDataSource有其自己的loginTimeout setting

+0

你說得對。我只是可能在連接url中使用了錯誤的ip。查看我的編輯,瞭解我基本需要的內容。 – Paralife 2009-10-23 16:23:35

相關問題