Karel Tejnora wrote:
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,

To myslim neni nikde garantovane, takovy PreparedStatement
muze delat dost krkolomne veci, napridlad Oracle si PreparedStatementy
jaksi cacheuje i mezi spojenimi, aby byly rychle pouzitelne
i pri poolovani spojeni.

ale kdy k tomu dojde... rs.close() je uvolneni na DB (zavreni kursoru) a rs=null je signal pro GC.

Priklad z TomCatu je korektnejsi, protoze definuje promenne
pro ResultSet a Statement jeste pred try {}, aby je mohl
uzavrit v pripade vyjimky ve finally. Ten JBossovy prikladek
neuzavre Statement pokud executeQuery() vyhodi vyjimku.
Pokud by si Connection drzelo nejaky odkaz na Statement,
byl by to problem.

Makub
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno             Martin Kuba
Institute of Computer Science    email: [EMAIL PROTECTED]
Masaryk University             http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
--------------------------------------------------------------

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Odpovedet emailem