Connection to MySQL schliesst nicht

xrax

Erfahrenes Mitglied
Hallo zusammen,

in einer serverseitugen Applikation schliesse ich meine MySQL-DB-Connection wie folgt:

Code:
 public void close(){
           try {
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            storeExceptionMessage("Exception in close");
            e.printStackTrace();
        }
       }

Leider funktioniert das nicht immer.
Manche Connections sind auch noch Stunden nach Beendigung der App noch aktiv.
Eine Exception wird aber nicht geworfen.

Ich habe auf dem Server mit ps -efl kontrolliert ob der Prozess meiner App wirklich nicht mehr besteht. Ich habe auch bestimmt alle Connections geclosed.

Trotzdem blockieren die Connections mit der Zeit die DB.

Ich wollte die Connections mit
Code:
KILL id
killen, aber woher soll ich wissen welche id von meiner App genutzt wurde?

Hat jemand eine Idee?

Beste Grüße
xrax
 
Tritt denn eine Exception bei deinem Statement.close() auf? Dann würde ja die Connection nicht mehr geschlossen werden. Alles in allem sieht dein Code sehr verdächtig aus. Wie sieht denn der Code auf, der diese close-Methode aufruft? Problem ist: Wenn bei der Ausführung vor dem close() ein Fehler auftritt, dann wird ja auch nichts mehr geschlossen?
 
Hi zeja,

finds gar nicht so verdächtig. ;-)

Und bei ner Exception sollte mir der catch ja eine Message geben. Tut er aber nicht.

Trotzdem kannste recht haben,- ich werde jetzt noch ein finaly einbauen. Für alle eventualitäten.

Was mich so irritiert ist, das die Connections bestehen bleiben, obwohl die Applikation aus ist.
Auch bei einem Programmabsturz muss doch mal die Connection (wohl durch die DB) geschlossen werden.

Besten Dank
xrax
 
Normalerweise sollte dein Code in etwas so ausschauen:

Java:
Connection con = getConnection();
try{
    Statement stmt = con.createStatement();
    try{
           ResultSet rs = stmt.executeQuery(...);
           try{
                      //read from rs
           }
            finally {
                  closeQuietly(rs);
           }
    }  
    finally{
         closeQuietly(stmt);
    }
}
finally{
      closeQuietly(con);
}
 

Neue Beiträge

Zurück