2012-08-03 14 views
6

Ich arbeite an der Behebung von Verbindungstimeouts Probleme für ein Projekt, das iam arbeitet. Wir verwenden c3p0, um den Verbindungspool zu verwalten und den Ruhezustand als Orm-Tool zu verwenden. wir benutzen auch Frühling.debugging Verlust von Verbindungen mit 'debugUnreturnedConnectionStackTraces'

Um herauszufinden, ob es noch nicht zurückgegebene Verbindungen gibt, habe ich debugUnreturnedConnectionStackTraces in meiner c3p0-Konfiguration auf true gesetzt (NICHT in c3p0-Eigenschaften).

Gibt es noch etwas, was ich tun muss. Muss ich auch etwas zu meiner lod4j.properties hinzufügen oder genügt es, debugUnreturnedConnectionStackTraces auf true zu setzen?

Auch, sollte ich debugUnreturnedConnectionStackTraces in c3p0 Eigenschaften auf True setzen?

Danke für die Hilfe

Antwort

3

persönlich die beiden folgenden 2 Zeilen zu meinem hibernate.cfg.xml I

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

Ich glaube, der Standardwert auf dem Timeout 0 ist, und ich bin normalerweise hinzufügen nicht sicher, wie das funktionieren soll.

+0

danke scott. Aber reicht es, wenn wir 'debugUnreturnedConnectionStackTraces' auf 'true' setzen oder auch Änderungen an meiner log4j.properties vornehmen? und wo würde 'debugUnreturnedConnectionStackTraces' die Stack-Traces protokollieren. Wird es sich in den Protokollen des Anwendungsservers anmelden? – Npa

+0

Ich benutze log4j nicht, aber ich würde erwarten, dass Sie den Log-Level auf Debug setzen müssen. Und ja, es sollte im Anwendungsserverprotokoll enden. –

10

ein bisschen auf Corey Antwort Ausbau:

Wenn unreturnedConnectionTimeout positiv und debugUnreturnedConnectionStackTraces auf true gesetzt ist, dann wird der Stack-Traces, die unerwidert Ausnahmen generiert werden vom Logger „com.mchange.v2 auf INFO-Ebene protokolliert werden. resourcepool.BasicResourcePool ".

Oft protokollieren Benutzer über allen Loggern alles über der INFO-Ebene, sodass diese Stapelverfolgungen nur in Ihren Protokollen angezeigt werden. Wenn Sie sie jedoch nicht sehen, überprüfen Sie Ihre Protokollierungskonfiguration, um sicherzustellen, dass Nachrichten in INFO von diesem Protokollierer nicht gefiltert werden.

Beachten Sie, dass debugUnreturnedConnectionStackTraces NOTHING ausführt, wenn nicht returnedConnectionTimeout ebenfalls nicht festgelegt ist.

Siehe

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

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

Ich hoffe, das hilft!

p.s. Es spielt keine Rolle, wie Sie diese Eigenschaften festlegen, solange sie richtig eingestellt sind. c3p0 löscht Pool-Konfigurationen bei INFO bei Pool-Initiierung; Überprüfen Sie Ihre Protokolle, um sicherzustellen, dass Sie, wie auch immer Sie versuchen, Parameter zu setzen, die von Ihnen erwartete Konfiguration haben. Alternativ können Sie JMX verwenden, um Parameter zu überprüfen.