我正在使用休眠3與c3p0的程序,它不斷從某些源提取數據並將其寫入數據庫。 現在的問題是,數據庫可能由於某些原因而變得不可用(在最簡單的情況下:我只是關閉它)。休眠c3p0斷管
如果有什麼要寫入數據庫,則不應該有任何異常 - 查詢應等待所有永久性,直到數據庫再次可用。 如果我沒有弄錯,這是連接池可以爲我做的事情之一:如果數據庫有問題,只需重試連接 - 在最壞的情況下爲無窮大。
但是,相反,我得到一個破損的管道異常,有時跟在拒絕連接,然後異常傳遞給我自己的代碼,這不應該發生。
即使我發現異常,我又能幹淨地重新初始化休眠嗎? (到目前爲止,沒有c3p0,我只是再次構建會話工廠,但如果可能會泄漏連接(或者可以這麼做),我不會感到驚訝)。
該數據庫是Virtuoso開源版本。
我hibernate.xml.cfg C3P0的配置:
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.breakAfterAcquireFailure">false</property>
<property name="hibernate.c3p0.acquireRetryAttempts">-1</property>
<property name="hibernate.c3p0.acquireRetryDelay">30000</property>
<property name="hibernate.c3p0.automaticTestTable">my_test_table</property>
<property name="hibernate.c3p0.initialPoolSize">3</property>
<property name="hibernate.c3p0.minPoolSize">3</property>
<property name="hibernate.c3p0.maxPoolSize">10</property>
BTW:測試表創建和我得到噸調試輸出 - 如此看來,它實際上讀取配置。
是的,我現在看到,這種簿記可能對例如之上實現一個連接池,但它超出了這個池的範圍。 – 2009-11-13 13:23:23