2012-08-03 75 views
6

我正在修復iam正在處理的項目的連接超時問題。我們使用c3p0來管理連接池和休眠作爲orm工具。我們也用春天。使用'debugUnreturnedConnectionStackTraces'調試連接丟失

要找到是否有任何未返回的連接,我已經在我的c3p0配置(不在c3p0屬性中)將debugUnreturnedConnectionStackTraces設置爲true。

還有什麼我需要做的。我是否還需要向我的lod4j.properties中添加任何內容,還是僅僅將debugUnreturnedConnectionStackTraces設置爲true就足夠了?

此外,我應該在c3p0屬性中設置debugUnreturnedConnectionStackTraces爲true?

感謝您的幫助

回答

3

個人而言,我一般都在下面2行添加到我的hibernate.cfg.xml

<property name="hibernate.c3p0.unreturnedConnectionTimeout">60</property> 
<property name="hibernate.c3p0.debugUnreturnedConnectionStackTraces">true</property> 

我相信在超時的默認值是0,我不知道該如何工作。

+0

謝謝斯科特。但是,如果我們將'debugUnreturnedConnectionStackTraces'設置爲true,或者是否也應該對我的log4j.properties進行任何更改,這足夠了嗎?以及'debugUnreturnedConnectionStackTraces'記錄棧跟蹤的位置。它會登錄到應用程序服務器的日誌嗎? – Npa 2012-08-03 17:04:55

+0

我不使用log4j,但我希望你需要把日誌級別調試。是的,它應該在應用程序服務器日誌中結束。 – 2012-08-03 17:33:50

10

對科裏的答案擴展了一下:

如果unreturnedConnectionTimeout是積極的,debugUnreturnedConnectionStackTraces設置爲true,那麼產生的未歸還的例外在日誌記錄器「com.mchange.v2 INFO級別將被記錄的堆棧跟蹤。 resourcepool.BasicResourcePool」。

通常人們會在所有記錄器中記錄高於INFO級別的任何內容,因此這些堆棧跟蹤只會出現在您的日誌中。但是,如果您沒有看到它們,請檢查您的日誌記錄配置,以確保來自該日誌記錄器的INFO中的消息不被過濾。

請注意,如果未設置unreturnedConnectionTimeout,debugUnreturnedConnectionStackTraces將不做任何處理。

http://www.mchange.com/projects/c3p0/#unreturnedConnectionTimeout

http://www.mchange.com/projects/c3p0/#debugUnreturnedConnectionStackTraces

我希望這有助於!

p.s.只要設置得當,如何設置這些屬性並不重要。 c3p0在INFO啓動池時轉儲池配置;檢查你的日誌,以確保無論你想設置參數,你都有你期望的配置。或者,您可以使用JMX來檢查參數。