Datenbankverbindungen nicht geschlossen nach Leerlauf-Timeout in Wildfly-Datenquelle

8

Ich habe eine Anwendung unter Wildfly 8.1 laufen Die Datenbankverbindungen, die in den Anwendungen verwendet werden, stammen aus einer Datenquelle, die in der Datei standalone.xml definiert ist.

Problem: Ich weiß nicht warum, aber die Verbindung vom Pool geht niemals leer und wird freigegeben. Wenn der Pool schließlich gefüllt wird, werden alle aktiven Verbindungen und Anwendungen mit javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/bo/datasource

gestartet

Zur gleichen Zeit, wenn ich mir die Datenbank anschaue, werden die meisten Verbindungen im Leerlauf angezeigt. (Konfiguration und Ergebnisausgabe unten)

Ich bin jetzt seit einer Woche dabei und konnte die Ursache dieses Problems nicht herausfinden. Ich habe auch alle Orte überprüft, an denen eine Verbindung erstellt wurde und habe sichergestellt, dass sie danach geschlossen werden.

Was sind die anderen möglichen Orte, die ich untersuchen sollte? Oder ist das ein Fehler (oder bekannte Probleme mit der Datenquelle Wildfly)?

Wildfly-Datenquellen-Definition:

%Vor%

Wildfly-Datenquellenpool-Informationen:

Befehl:

%Vor%

Antwort:

%Vor%

Status der PostgreSQL-Abfrage:

Befehl:

%Vor%

Antwort:

%Vor%     
Salman A. Kagzi 21.02.2015, 11:51
quelle

1 Antwort

6

Es stellt sich heraus, dass Hibernate die Verbindung hielt und sie nicht zum Pool freigab. Ungeachtet der Tatsache, dass wir Thread-lokalen Kontext verwenden. Aber nach dem Hinzufügen von <property name="hibernate.connection.release_mode">after_transaction</property> zur Hibernate-Konfiguration. Das Problem wurde gelöst.

PS: Ich verstehe immer noch nicht, warum wir dies explizit definieren müssen und warum der auto release_mode die Verbindung nicht freigibt, sobald die Sitzung beendet ist.

    
Salman A. Kagzi 24.02.2015, 07:57
quelle

Tags und Links