Unfortunately I cannot login to your site atm, so i'm sending this via email:
When reloading an application in tomcat, the JVM is not stopped, so shutdown hooks won't be called. As you register a new shutdown hook statically, they will _all_ be called when finally stopping the tomcat instance.
I do a com.avaje.lib.ShutdownManager.shutdown(); in the servlets contextDestroyed method, so all threads are already closed, but the hook won't get removed. i just made "hook" a static variable, and added Runtime.getRuntime().removeShutdownHook(hook); in the shutdown() method.
This fixes the bug for me.
so long and best regards,