Вы должны грациозно выключения кварца в пределах контекста сервлета, как это:
public class AppListener implements ServletContextListener
{
@Override
public void contextDestroyed(ServletContextEvent arg0)
{
try
{
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
Scheduler scheduler = (Scheduler) context.getBean("quartzSchedulerFactory");
scheduler.shutdown(true);
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0)
{
}
Вы должны добавить их ServletContextListener в вашем web.xml. Вы должны разместить своего слушателя на первой позиции в вашем web.xml, потому что tomcat запускает слушателей в обратном порядке при выключении.
<listener>
<listener-class>yourpackage.AppListener</listener-class>
</listener>
В качестве альтернативы вы можете выключить планировщик в методе с аннотацией @PreDestroy