for my webapp I use Quartz. When I deploy the app all is ok. When I undeploy the app, the Quartz thread is not destroyed.
Log is:
INFO: Stopping service Catalina
SEVERE: The web application
[/example] appears to have started a
thread named
[DefaultQuartzScheduler_Worker-1] but
has failed to stop it. This is very
likely to create a memory leak. Jul
12, 2010 6:30:40 PM
org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads
Anyone can tell me how I can force the destroy action for those threads?
Thanks,
Tommaso
Best Answer
I found that the issue for me was that quartz was being shutdown but the webapp didn't wait for quartz to finish before it shutdown so Tomcat decided that it had left threads running and complained.
So I managed my scheduler like this:
Note the boolean argument to shutdown is the vital part. If you remove that
true
to call the no-arg version or set it tofalse
, your webapp won't wait for quartz to shudown before it shuts down.TL;DR: call
scheduler.shutdown(true)
to make your webapp wait for quartz to finish.