2012-08-03 13 views
6

Sto lavorando per risolvere i problemi di timeout della connessione per un progetto su cui sto lavorando. usiamo c3p0 per gestire il pool di connessioni e lo hibernate come strumento orm. usiamo anche la primavera.debug della perdita di connessioni tramite "debugUnreturnedConnectionStackTraces"

Per trovare se ci sono delle connessioni non restituite, ho impostato debugUnreturnedConnectionStackTraces su true nella mia configurazione c3p0 (NON nelle proprietà c3p0).

C'è qualcos'altro che devo fare. Devo aggiungere qualcosa al mio lod4j.properties o è sufficiente per impostare debugUnreturnedConnectionStackTraces su true?

Inoltre, dovrei impostare debugUnreturnedConnectionStackTraces su true nelle proprietà c3p0?

Grazie per l'aiuto

risposta

3

Personalmente aggiungo normalmente entrambe le seguenti 2 righe alla mia hibernate.cfg.xml

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

credo che il valore di default sul timeout è 0 e sono non sono sicuro di come dovrebbe funzionare.

+0

grazie scott. Ma, è abbastanza se impostiamo 'debugUnreturnedConnectionStackTraces' su true o dovrei anche apportare modifiche al mio log4j.properties anche. e dove sarebbe "debugUnreturnedConnectionStackTraces" registrare le tracce dello stack. Accederà ai log del server delle applicazioni? – Npa

+0

Non uso log4j ma mi aspetto che sia necessario convertire il livello di log in debug. E sì, dovrebbe finire nel registro del server delle applicazioni. –

10

Espansione di un po 'la risposta di Corey:

Se unreturnedConnectionTimeout è positivo e debugUnreturnedConnectionStackTraces è impostata su true, le tracce dello stack che hanno generato eccezioni non restituiti sarà registrata a livello INFO dal logger "com.mchange.v2. resourcepool.BasicResourcePool".

Spesso le persone registrano qualcosa sopra il livello INFO da tutti i logger, quindi queste tracce di stack vengono visualizzate nei registri. Ma se non li vedi, controlla la configurazione di registrazione per assicurarti che i messaggi su INFO da quel logger non siano filtrati.

Si noti che debugUnreturnedConnectionStackTraces farà NOTHING se unreturnedConnectionTimeout non è impostato.

Vedi

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

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

Spero che questo aiuta!

p.s. non importa come si impostano queste proprietà, purché siano impostate correttamente. c3p0 esegue il dump delle configurazioni del pool a INFO all'avvio del pool; controlla i tuoi registri per assicurarti che, nonostante tu stia cercando di impostare i parametri, hai la configuarion che ti aspetti. In alternativa è possibile utilizzare JMX per ispezionare i parametri.