我使用unreturnedConnectionTimeout="1800"
和debugUnreturnedConnectionStackTraces="true"
釋放被遺忘的連接。 但有時應用程序仍然存在,但數據庫沒有任何活動。 1800秒後,c3p0連接池將關閉連接。一旦我再次開始使用舊的entityManager,它會抱怨連接已關閉。 我試着每隔幾分鐘就向entityManager發送一個本地查詢(SELECT NOW()
),但是這並沒有讓c3p0連接保持活動狀態。也許本機查詢繞過c3p0?保持c3p0連接存活
我想保留'unreturnedConnectionTimeout
'作爲失敗保存,但也希望能夠保持有效的連接活着。
我該如何解決這個問題?
感謝, 米洛
編輯: 似乎C3P0連接不能unreturnedConnectionTimeout
後維持生命。它不關注活動,而是創造時間。現在我正在尋找api訪問c3p0來更新創建時間...... Bah,髒......
謝謝,我完全同意。但是應用程序的設計是錯誤的,改變目前的工作很多。 –
生活就像這樣......但是如果連接在正常的操作過程中長時間被檢出,你將不能使用unreturnedConnectionTimeout作爲故障安全。通過設置unreturnedConnectionTimout,您可以通知c3p0可以在合法的非病理用例中檢出連接的最大時間段。如果連接被您的應用程序無限期地打開,那麼沒有任何時間不合法。 –
幸運的是,只要用戶存儲某些內容或切換到應用程序中的其他頁面,連接就會關閉。我將超時設置爲4小時,似乎功能足夠好。 我覺得奇怪的是,c3p0在扔掉它之前不檢查活動。我將爲此創建一個問題。 –