Connection con=null;
try
{
   con = ...getConnection();
   Stetement stmt = con.createStatement();
   ResultSet rs = stmt.executeQuery(...);
   rs.close();
   rs=null;
   stmt.close();
   stmt=null;
}
finally
{
   if(con!=null)
  {
     try { con.close(); } catch(SQLException e0) {}
  }
}

Je zase nejuvadenejsi priklad v Jbossu. Krom toho rs.close() rs=null
ResulSet a Stement by mel uzavrit GC a connection by na ne nemela drzet referenci, ale kdy k tomu dojde... rs.close() je uvolneni na DB (zavreni kursoru) a rs=null je signal pro GC.


Taky si myslim, ze by melo stacit to uzavreni ve finally sekci a
to zavirani a nastaveni na null jeste v try sekci je zbytecne.

S temi DBUtils bych by opatrny, pokud jenom zaviraji Connection,
tak to nestaci, protoze Connection v TomCatu je jenom obalovatko,
jehoz close() vrati spojeni do poolu, neuzavre ho. Takze kdyz
neuzavrete ResultSety a Statementy, zustanou otevrene.

V normalni aplikaci bez poolu by se ResultSety a Statementy
uzavrely pri uzavreni Connection, cimz by se to tise vyresilo.
To pri pouziti poolu neplati.

Odpovedet emailem