关闭JBoss需要永远的时间

关闭JBoss需要永远的时间,jboss,quartz-scheduler,shutdown,Jboss,Quartz Scheduler,Shutdown,我在停止jboss时遇到了问题。大多数情况下,当我执行关机时。它会在几秒钟内停止服务器 但有时需要停下来,我不得不终止这个过程 无论何时关闭需要很长时间,我都可以看到调度程序正在运行,并且可以在日志中看到 2014-07-14 19:19:29,124 INFO [org.springframework.scheduling.quartz.SchedulerFactoryBean] (JBoss Shutdown Hook) Shutting down Quartz Scheduler 201

我在停止jboss时遇到了问题。大多数情况下,当我执行关机时。它会在几秒钟内停止服务器

但有时需要停下来,我不得不终止这个过程

无论何时关闭需要很长时间,我都可以看到调度程序正在运行,并且可以在日志中看到

2014-07-14 19:19:29,124 INFO  [org.springframework.scheduling.quartz.SchedulerFactoryBean] (JBoss Shutdown Hook) Shutting down Quartz Scheduler
2014-07-14 19:19:29,124 INFO  [org.quartz.core.QuartzScheduler] (JBoss Shutdown Hook) Scheduler scheduler_$_s608203at1vl07shutting down.
2014-07-14 19:19:29,124 INFO  [org.quartz.core.QuartzScheduler] (JBoss Shutdown Hook) Scheduler scheduler_$_s608203at1vl07 paused.

然后什么也不要做。

确保Quartz调度程序线程及其线程池中的所有线程都标记为守护进程线程,这样它们就不会阻止JVM退出

这可以通过分别设置以下石英特性来实现:

org.quartz.scheduler.makeSchedulerThreadDaemon=true

org.quartz.threadPool.makeThreadsDaemons=true
虽然将调度线程标记为守护进程线程是安全的,但在将线程池线程标记为守护进程线程之前,应该先考虑一下,因为当JVM退出时,这些“工作者”线程可以在执行一些不希望突然中止的逻辑的中间。如果是这种情况,您可以让您的作业实现
org.quartz.InterruptableJob
接口,并在应用程序中的某个位置实现一个JVM关闭挂钩,该挂钩会中断当前执行的所有作业(其列表可从
org.quartz.Scheduler
API获得)