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