Hi Chris, > > Hi all, > > > > Thanks for your responses. I think I've found the problem. > > > > My wrapping class which detects the invocation of the close() method to > > decrement its count is no longer decrementing its count because > > method.getDeclaringClass() has changed from java.sql.Connection to > > java.lang.AutoCloseable. > > > > Is it safe to check for either java.sql.Connection or > > java.lang.AutoCloseable? > > > > .. or should I just check for the "close()" method invocation, based on the > > fact that I'm not wrapping anything (here) that I shouldn't be counting?
> That depends upon the point of the whole thing. What, um, is the point > of the whole thing? The wrapping class is to limit the number of active connections, waiting up to a configured time for one to become idle if necessary. I can't recall if this was because the timeout or the limit was not configurable when this was first written in 2007. The count is decremented if the called method is "close" and it's from the expected Class. Previously this was java.sql.Connection, now it also accepts "close" from java.lang.AutoCloseable to decrement the count. As the count wasn't being decremented, the active concurrent limit was quickly (believed to be) reached. I discussed this with a colleague who had previously worked with this application. There was some consternation about the approach but it was agreed that this was the least risk answer - for an application we're dropping support for in December, it is not worth rewriting. This will at least enable deployments to address vulnerabilities fixed in 9.0.71+. Thanks, Tim