testWhileIdle
ist keine c3p0-Eigenschaft. Es tut nichts weh, aber es kann Sie verwirren und glauben, Sie würden etwas tun, was Sie nicht tun. Sie testen ungenutzte Verbindungen, wahrscheinlich viel zu häufig, da Sie auch Connections on checkout testen.
Ihre Konfiguration erstreckt sich über zwei Orte. Ich bin mir nicht sicher, wie die Spring- und Hibernate-Konfigurationen interagieren werden. c3p0 DataSources dump config bei INFO auf Pool-Init. Möglicherweise möchten Sie überprüfen, ob Sie die erwartete Konfiguration haben.
Bezüglich Ihres Problems klingt es sehr nach einem Verbindungsleck. Sie müssen sicherstellen, dass jede Verbindung, die von einer Datenquelle ausgecheckt wurde, in einer finally-Methode oder über try-with-resources in Java 7+ zuverlässig geschlossen wird.
Verwenden Sie die c3p0-Konfigurationsparameter unreturnedConnectionTimeout
und debugUnreturnedConnectionStackTraces
zum Debuggen eines Verbindungslecks.
Siehe hier .
(Hinweis:In hibernate.cfg wären sie hibernate.c3p0.unreturnedConnectionTimeout
und hibernate.c3p0.debugUnreturnedConnectionStackTraces
. Oder Sie können sie direkter in Ihrer Spring-XML festlegen.)