Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Hibernate-Verbindungsproblem bei Verwendung von c3p0

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.)