You have many threads that are not part of Tomcat, as Chuck mentions.
Whatever you start in the webapp you have to close as well. You can
close via a shutdown listener (Context listener), or if you use
something like Spring which already has built in shutdown hook,
implement their shutdown interface or register a callback.
When you shutdown a java executor (which can be seen in the thread
dump), notice that to be safe you can do a two steps shutdown. Step 1
does a graceful shutdown and waits. When the graceful shutdown times
out and the pool has not finishes, step 2, “hard” shutdown to finish
quickly. This will give you the benefit of finishing pending tasks and
limit the amount of time allowed before you kill the pool. A hard shut
down also means that tasks that are still waiting in the pool will not
be executed, so use with caution.

This also goes for everything that you create that potentially has
persistent resource usage, such as connection pools, HttpClient, etc.

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

Reply via email to