由于我的quartz任务需要页面手动创建,所以Spring的配置文件只有一行:
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
lazy-init="false">
</bean>
<property name="autoStartup" value="true"/>我也试过,不过没用,一样是quartz启动,但是不恢复任务。
quartz.properties使用的JobStoreTX,在不使用Spring注入,直接使用web.xml配置org.quartz.ee.servlet.QuartzInitializerServlet时测试没有问题,重启工程也可以正确恢复任务,我没有额外的改动,文件如下:
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = false
# Configure Datasources
#============================================================================
org.quartz.jobStore.dataSource = myDS
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartz1x?useUnicode=true&characterEncoding=utf8
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password =111111
org.quartz.dataSource.myDS.maxConnections = 10
6 个解决方案
#1
你所说的不恢复任务是指什么
#2
比如我要求打印10次时间,但是打印了3次我就把tomcat关掉然后重启,剩下的7次并不会自动打印,也就是任务不能恢复。而我如果使用servlet就可以,随便我关停tomcat
#3
唉,搞到最后才发现使用spring嵌入的时候,配置文件必须要指定,不然SchedulerFactoryBean不会去寻找加载quartz.properties。只要在bean里加一个属性就解决。
至于之前数据库持久化成功,这是个假象,那是我其他地方配置有问题,导致串数据库了。
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
lazy-init="false">
<property name="configLocation" value="classpath:quartz.properties" />
</bean>
至于之前数据库持久化成功,这是个假象,那是我其他地方配置有问题,导致串数据库了。
#4
楼主给力!
#5
我 也是这个问题, 我重启服务器还是不好使
#6
我的任务也都是手动去添加的,比如我 在页面添加个 半小时后执行,如果不重启服务器 一切都很ok 。 但是重启服务器后, 数据库中的任务 貌似就没 加载到 调度起中。 找不到 需要执行的job , 在我重启后, 如果我在新增一条定时任务,前面那个错过触发事件的任务 就会立马出发。 感觉是像 quartz 没有起来, 但是 启动完项目 , 控制台 一只在输出
batch acquisition of 0 triggers
MisfireHandler: scanning for misfires...
Found 0 triggers that missed their scheduled fire-time.
找不到 错过触发时间的任务
batch acquisition of 0 triggers
MisfireHandler: scanning for misfires...
Found 0 triggers that missed their scheduled fire-time.
找不到 错过触发时间的任务
#1
你所说的不恢复任务是指什么
#2
比如我要求打印10次时间,但是打印了3次我就把tomcat关掉然后重启,剩下的7次并不会自动打印,也就是任务不能恢复。而我如果使用servlet就可以,随便我关停tomcat
#3
唉,搞到最后才发现使用spring嵌入的时候,配置文件必须要指定,不然SchedulerFactoryBean不会去寻找加载quartz.properties。只要在bean里加一个属性就解决。
至于之前数据库持久化成功,这是个假象,那是我其他地方配置有问题,导致串数据库了。
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
lazy-init="false">
<property name="configLocation" value="classpath:quartz.properties" />
</bean>
至于之前数据库持久化成功,这是个假象,那是我其他地方配置有问题,导致串数据库了。
#4
楼主给力!
#5
我 也是这个问题, 我重启服务器还是不好使
#6
我的任务也都是手动去添加的,比如我 在页面添加个 半小时后执行,如果不重启服务器 一切都很ok 。 但是重启服务器后, 数据库中的任务 貌似就没 加载到 调度起中。 找不到 需要执行的job , 在我重启后, 如果我在新增一条定时任务,前面那个错过触发事件的任务 就会立马出发。 感觉是像 quartz 没有起来, 但是 启动完项目 , 控制台 一只在输出
batch acquisition of 0 triggers
MisfireHandler: scanning for misfires...
Found 0 triggers that missed their scheduled fire-time.
找不到 错过触发时间的任务
batch acquisition of 0 triggers
MisfireHandler: scanning for misfires...
Found 0 triggers that missed their scheduled fire-time.
找不到 错过触发时间的任务