Zdravim,

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.

Neznam impl v Tomcatu, ale pokladam za obecny uzus, ze uzavreni Connection je zaroven uzavrenim i vsech Statementu a ResultSetu z neho pochazejicich. Pokud by to tak nebylo, s klidem bych to oznacil za bug, prestoze takove chovani specifikace pravdepodobne nikde nevyzaduje; jenze Connection je zde factory, resp. rodicovsky objekt, a tak jeho dispose by melo znamenat i dispose potomku; navic ResultSet je vetsinou "zivy" objekt, ktery ke sve existenci Connection potrebuje a tak je takove chovani nejlogictejsi. Pokud jde o JBosse, ten je v tomto smyslu "v klidu", jelikoz neprovadi pouze connection pooling, ale ma vlastni implementace javax.jdbc.*, ktere slouzi jako proxy k tem skutecnym pochazejicim z JDBC driveru, a tyto wrappery takove "managed" chovani zajistuji.

Roman



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
--------------------------------------------------------------


Odpovedet emailem