tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christopher Schultz <ch...@christopherschultz.net>
Subject Re: SQLExceptions after stopping Tomcat
Date Sat, 17 Sep 2016 16:40:47 GMT
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Yuval,

On 9/16/16 2:33 PM, Yuval Schwartz wrote:
> Hey Chris,
> 
> You have a line in your link that reads:
> 
> // if you want to issue multiple queries and/or // work with
> multiple result sets, either declare more Statement // and
> ResultSet locals above and duplicate all cleanup logic for them, //
> or make sure you close each object along the way before you // try
> to re-use the reference
> 
> I have the following code in one of my data accessing methods:
> 
> [same ps and rs instantiating as you]
> 
> try { ps = connection.prepareStatement(query1); rs =
> ps.executeQuery();
> 
> ...[process rs. (I dont close the ps or the rs at this point)]
> 
> ps = connection.prepareStatement(query2); rs = ps.executeQuery(); 
> .... }
> 
> [catch and finally blocks as you specify]
> 
> As you can see I simply reuse the ps and rs variables, without
> closing them beforehand. Is this a problem?

That depends upon your database driver. I seem to recall Oracle
specifically being very unforgiving when it comes to failing to close
resources. I would add explicit "close" calls to every object you are
expecting to be finished with.

> The reason this never raised a flag before is because I have
> another database accessing method that executes two queries in the
> same fashion and it never caused any issues.

Are there any other factors involved? Maybe that other accessing
method doesn't get called very often? Is it in a separate process
where cleanup happens when the process completes? Do you have some
other kind of pooling mechanism that will auto-close resources?

I think it's always a good idea to follow the API's recommendations
about closing resources when you are done with them. In the worst
case, the close() method is a no-op and it will eventually be JIT'd
away. In the best case, you get clean resource management.

- -chris

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJX3XIPAAoJEBzwKT+lPKRYhKsQAJo/+GhhRAQ2y6Mqkr54Ufb5
Wz22WHvJ15er8z/LdZ8FLzGchD7WsmgBZj8v3yeEptzoxK7rhjvoxrO7w6ZTtz7x
6Qogj+qa+/HeUqELnr2SkQdyrMp+aal/DEXQvMvFp+VAKrEq+x0OKeMGBvzaimsf
xt9AWHeD5YsfRyGqvW/RFDIPFcSq83VDha2owQEcvvzNaw/DRTPTi/OubHoDuFtF
+MCkLjXRkbYThg/ljElWivEDd2NZJP5yDtwTBAsnQeydvKVpN7vzA47tQOznbxHN
eVhM1aPxQim1Jt3++jXT+ByGHNpiHLuhKkxwVPm8ZD6WyWgFGHp7R6w9eddnMLth
mUhzS5HPCLYOS0x3XcuheuhybEQdWNiBh4d6dQS59+rkdU3CASPWrbwFsdEPwMq1
0OdDJAZ436t+EP+XJjObnT8KV9wBWFzEN3ywxhjHWdus6bmJR+O6dxlbFXYHoYdX
fOemuIsJvjb4vl0mw9nql4kKm1MsU46gAqjP89fiCaIVPXGJjGTyqLeD48HUiNNy
YwhSCEFcj1ucQp6vG+MU+AnvQbxwnnrymjcuDWsgMehG772zWmRsg5mT3NaK4EZr
rbPnfyZSMkNMgGMjwCZQl8GlKlrsyIgnS/5zozPiSmldqJ0dEyKhPgxIfWpAIJiG
K0/k2szfVtoSBaje5eIG
=+Il1
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message