Oracle de connexion pas de clôture dans l'Application Java

J'ai une connexion de fuite dans certaines anciennes applications web Java qui n'utilisent pas le regroupement de connexion.
En essayant de trouver la fuite est difficile, parce que ÇA ne va pas m'accorder l'accès à v$session SELECT Count(*) FROM v$session;

Donc à la place je suis en train de déboguer avec le Système.des relevés. Même après la fermeture de la connexion conn.close(); quand j'ai l'impression conn pour le fichier journal du Système, il me donne le lien nom de l'objet.

try { 
    Connection conn;
    conn.close() 
    } 
catch (SQLException e) { }
finally { 
    if (conn != null) {
        try {
           System.out.println("Closing the connection"); 
           conn.close();
           }
        catch (Exception ex) 
            {
            System.out.println("Exception is " + ex); 
            }
     }
 }
//I then check conn and it is not null and I can print the object name.
    if (conn != null) {
            System.out.println("Connection is still open and is " + conn); 
    }

cependant, si j'ajoute également conn = null; ci-dessous la conn.close(); déclaration de la connexion semble maintenant fermé. Donc ma question c'est est-ce conn.close(); en fait, la libération de ma connexion ou dois-je aussi faire nulle pour vraiment libérer de ma connexion. Comme je l'ai dit, c'est vraiment dur pour moi de déterminer si la connexion est effectivement libéré sans être en mesure d'interroger v$session. Est-il un bout de code java qui peut me donner mes connexions ouvertes??

C'est probablement d'enseignement à ce point parce que j'ai l'intention de revoir ces applications pour utiliser le regroupement de connexion mais je suis à la recherche d'un rapide bandaid pour l'instant.

  • Je suppose que c'est un peu tiré par les cheveux, mais si vous êtes déclarant conn à l'intérieur de la try bloquer ensuite, il est hors de portée par la suite, et aussi dans le finally bloc. Encore, je me demande si vous avez une variable de classe que vous êtes à la répétition, et peut-être que quelque part, l'observation est la rupture et en laissant une fuite derrière.
  • vous avez raison... dans mon code, elle est déclarée à l'extérieur de l'essayer.
  • "semble fermée"?
InformationsquelleAutor jeff | 2010-09-22