2 lingyundouer lingyundouer 于 2016.01.13 16:40 提问

quartz持久化到数据库

quartz在项目启动时,是不是会根据配置文件自动持久化到数据库,我的配置如下:

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
     <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:properties/quartz.properties" />
    <property name="autoStartup" value="true" />
    <property name="applicationContextSchedulerContextKey" value="applicationContext" />
    <property name="startupDelay" value="20" />
    <property name="overwriteExistingJobs" value="true" />
    <property name="triggers">
        <list>
            <!-- 触发器列表 -->
            <ref bean="helloJobTrigger" />
        </list>
    </property>
</bean>

<bean id="helloJobBean" class="com.maidou.job.HelloJob"/>

<!-- 触发器 -->
<bean id="helloJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="helloJobDetail" />
    <property name="cronExpression" value="0/5 * * * * ?" />
    <!--<property name="group" value="group1"/>-->
    <property name="name" value="helloJobTrigger"/>
    <property name="volatility" value="true"/>
</bean>

<!--<bean id="helloJobDetail"-->
        <!--class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">-->
<bean id="helloJobDetail"
        class="com.maidou.factory.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="helloJobBean" />
    <property name="targetMethod" value="execute" />
    <property name="concurrent" value="false" />
    <property name="durable" value="true"/>
    <property name="volatility" value="true"/>
    <property name="shouldRecover" value="true" />
</bean>

可以连接到数据库,数据库是初始化时建的表,没有添加过数据
在运行时报如下错误:
信息: Loading Quartz config from [class path resource [properties/quartz.properties]]
2016-1-13 16:19:33 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
2016-1-13 16:19:34 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
信息: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@a98ce7e: defining beans [org.springframework.scheduling.quartz.SchedulerFactoryBean#0,helloJobBean,helloJobTrigger,helloJobDetail,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,dataSource]; root of factory hierarchy
2016-1-13 16:19:34 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} closed
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.scheduling.quartz.SchedulerFactoryBean#0' defined in class path resource [spring-quartz.xml]: Invocation of init method failed; nested exception is org.quartz.JobPersistenceException: Couldn't store trigger 'helloJobTrigger' for 'helloJobDetail' job:The job (DEFAULT.helloJobDetail) referenced by the trigger does not exist. [See nested exception: org.quartz.JobPersistenceException: The job (DEFAULT.helloJobDetail) referenced by the trigger does not exist.]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83)
at com.maidou.test.main(test.java:13)
Caused by: org.quartz.JobPersistenceException: Couldn't store trigger 'helloJobTrigger' for 'helloJobDetail' job:The job (DEFAULT.helloJobDetail) referenced by the trigger does not exist. [See nested exception: org.quartz.JobPersistenceException: The job (DEFAULT.helloJobDetail) referenced by the trigger does not exist.]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSupport.java:1270)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$5.execute(JobStoreSupport.java:1176)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$40.execute(JobStoreSupport.java:3716)
at org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:242)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInLock(JobStoreSupport.java:3712)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSupport.java:1172)
at org.quartz.core.QuartzScheduler.scheduleJob(QuartzScheduler.java:870)
at org.quartz.impl.StdScheduler.scheduleJob(StdScheduler.java:254)
at org.springframework.scheduling.quartz.SchedulerAccessor.addTriggerToScheduler(SchedulerAccessor.java:356)
at org.springframework.scheduling.quartz.SchedulerAccessor.registerJobsAndTriggers(SchedulerAccessor.java:287)
at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPropertiesSet(SchedulerFactoryBean.java:513)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 12 more
Caused by: org.quartz.JobPersistenceException: The job (DEFAULT.helloJobDetail) referenced by the trigger does not exist.
at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSupport.java:1231)
... 24 more

但是我在数据库添加qrtz_job_details表添加上job后,但是job_data是持久化数据,没有填,启动没有错,但是job不执行,这样的情况请问各位大神如何解决?

2个回答

devmiao
devmiao   Ds   Rxr 2016.01.13 23:56
CSDNXIAOD
CSDNXIAOD   2016.01.13 16:42

quartz持久化
SqlPersistenceService持久化数据库
SqlPersistenceService持久化数据库
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Quartz将定时任务持久化到数据库
如果用内存记录定时任务信息,应用重新启动后,定时任务信息将会丢失。比如,用户A通过系统设置1小时后执行Z操作,设置好后的,因系统重新启动,新启动的系统将会丢失“1小时后执行Z操作”的定时任务。如果,我们需要在系统意外(或非意外)重新启动后,仍保留定时任务信息,可以使用数据库存储定时任务信息。 优秀的参考文章Lesson 9: Job Stores用数据库存储定时任务信息在上一节就到的quartz的简
【Quartz】将定时任务持久化到数据库
阅读目录 > 参考的优秀文章> 用数据库存储定时任务信息> 以MySQL为例子,做个简单的DEMO > 参考的优秀文章 Lesson 9: Job Stores   > 用数据库存储定时任务信息 之前的文章所做的demo是将定时任务的信息保存在内存中的,见以下配置 org.quartz.jobStore.class = org.quartz.simpl.R
3、springBoot集成Quartz数据库持久化
前言 有时候,我们会将任务放到数据库中,等我们需要的是,自动从前台进行点击,然后开始执行任务。那么这个时候,就用到quartz。可以从数据库中直接读取,然后执行。非常的方便,可以说nice。 比如多点科技的试客任务,用户可以确定从几点到几点开始投放app,那么这里也可以用到,从几点开始到几点执行,无非就是加两条任务。一条是开始执行,一条是终止任务。 springBoot集成Quart...
Java定时框架Quartz实例详解与定时任务的Mongodb、Mysql持久化实现(三)Quartz持久化
就像我在上一篇中说的,把调度器信息存储在内存中非常的快也易于配置。但当调度器进程一旦被终止,所有的 Job 和 Trigger 的状态就丢失了。所以我们就需要把调度器信息持久化到数据库,在服务器重启时就可以自动启动终止的任务。Quartz不可能没有考虑到这个问题,可以通过引入Jar包与配置实现,并支持多种数据库版本。 一、持久化到MongoDB 1、引入Jar依赖 好吧,我承认,这竟然是我做
关于学习SpringMvc整合QuartZ定时管理任务的持久化管理
上篇博客实现了springMvc 整合quartz的功能简单实现,但是无法满足大部分要求,现在开始研究一下关于quartz的持久化处理。 搜索了一些资料,发现了一篇文章作为配置参考:http://blog.csdn.net/budapest/article/details/52176298?locationNum=8&fps=1 按照参考的资料配置后,功能基本实现,但是依旧不太灵活,不太符合我
Spring整合Quartz,并持久化Job到MySQL
1、创建项目 2、创建quartz数据库,并导入Quartz的SQL脚本 mysql> use quartz Database changed mysql> show tables; +--------------------------+ | Tables_in_quartz | +--------------------------+ | QRTZ_BLO
spring3.1和quatz2实现数据库持久化和动态加载
在这里我用的版本是spring3.1.1和quartz2.1.1,。原来用的是spring3.0,但是每次quartz启动之后都是跑第一次 或者第二次定时任务之后job的状态就变成ERROR了,然后定时任务就一直跑不了了。后来把spring升为3.1.1后问题就好了。 下面开始说实现的步骤吧 首先 要先在项目中导入相关的jar包。 这里我就不多说了,可以到官网上去下载, s
quartz的数据库持久化,动态增删改操作(不重启服务器)
公司的定时任务越来越多,boss想把它们都放到一个服务器里管理,让我研究一下,弄一套方案出来。网上看了很多资料,相关的资料不多,读了源码,加上自己测试,总算弄出来,拿出来分享给大家。如果你想在服务器不重启的情况下,完成对定时任务的增删改操作,并且时时监测定时任务的状态,就耐心的读下去。 先看一下项目结构: 图片有点大,主要想给大家看的就是quartz.properties,我们就从这个配置
spring中使用quartz框架(持久化到数据库+springboot)
本例是在springboot中通过读取数据库的定时任务信息,动态生成quartz定时任务 1、导入依赖: org.quartz-scheduler quartz 2.2.1 org.springframework spring-co
spring整合quartz并持久化
spring整合quartz有两种方式: 一.常见是使用配置文件,将定时任务保存到内存中 简单示例:          Xml代码          bean id="overdueRecall"           class="com.sursen.souba.ddlibserve.quartz.OverdueRecallTimerTask" />