`

Quartz job Cluster下报错

阅读更多

Cluster环境下,配置Quartz job为集群模式后,配置示例如下,其中红色部分与集群模式相关。我使用的是quartz-all-1.6.0,spring-context-support-3.0.1。

 1     <bean id="startQuertz" lazy-init="false" autowire="no"
 2         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
 3         <property name="triggers">
 4             <list>
 5                 <ref bean="jobTrigger" />
 6             </list>
 7         </property>
 8         <property name="dataSource" ref="dataSource" />
 9         <property name="transactionManager" ref="transactionManager" />
10         <property name="quartzProperties">
11             <props>
12                 <prop key="org.quartz.scheduler.instanceName">DataScheduler</prop>
13                 <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
14                 <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
15                 <prop key="org.quartz.threadPool.threadCount">5</prop>
16                 <prop key="org.quartz.threadPool.threadPriority">5</prop>
17                 <prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
18                 <prop key="org.quartz.jobStore.class">org.springframework.scheduling.quartz.LocalDataSourceJobStore</prop>
19                 <prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
20                 <prop key="org.quartz.jobStore.isClustered">true</prop>
21                 <prop key="org.quartz.jobStore.useProperties">false </prop>
22             </props>
23         </property>
24     </bean>

 

但系统运行Quartz job抛出如下的错误信息:

1 Caused by: org.quartz.JobPersistenceException: Couldn't store job: Unable to serialize JobDataMap for insertion into database because the value of property 'methodInvoker' is not serializable: org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean [See nested exception: java.io.NotSerializableException: Unable to serialize JobDataMap for insertion into database because the value of property 'methodInvoker' is not serializable: org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean]
 2     at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJob(JobStoreSupport.java:1041)
 3     at org.quartz.impl.jdbcjobstore.JobStoreSupport$4.execute(JobStoreSupport.java:1011)
 4     at org.quartz.impl.jdbcjobstore.JobStoreSupport$39.execute(JobStoreSupport.java:3590)
 5     at org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:244)
 6     at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInLock(JobStoreSupport.java:3586)
 7     at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJob(JobStoreSupport.java:1007)
 8     at org.quartz.core.QuartzScheduler.addJob(QuartzScheduler.java:785)
 9     at org.quartz.impl.StdScheduler.addJob(StdScheduler.java:278)
10     at org.springframework.scheduling.quartz.SchedulerAccessor.addJobToScheduler(SchedulerAccessor.java:311)
11     at org.springframework.scheduling.quartz.SchedulerAccessor.addTriggerToScheduler(SchedulerAccessor.java:334)
12     at org.springframework.scheduling.quartz.SchedulerAccessor.registerJobsAndTriggers(SchedulerAccessor.java:271)
13     at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPropertiesSet(SchedulerFactoryBean.java:513)

网上google一番,发现这个是Spring的一个Bug,详情参见:http://forum.springsource.org/showthread.php?31820-Quartz-and-JDBCJobStore,按照论坛中的方案修改Spring包中的2个java文件后解决。

其他的注意事项

1. Quartz job类要实现java.io.Serializable接口,不然还是会报NotSerializableException的异常。

2. Quartz job类的属性也要实现java.io.Serializable接口。

参考

http://soulshard.iteye.com/blog/337886

分享到:
评论

相关推荐

    quartz job持久化

    实现把job持久化数据库,里面有具体的说明文档 Quartz 1 1 通过quartz创建持久化定时...1.3.1 实现org.quartz.Job接口 6 1.3.2 把以上job持久化到数据库中 6 1.4 启动job所需条件 6 1.4.1 在web.xml中加入如下监听 6

    spring多个定时任务quartz配置

    3. **定义Job**:创建一个实现了`org.quartz.Job`接口的类,这个类代表你的定时任务。例如,我们可以创建一个名为`MyJob`的类: ```java public class MyJob implements Job { @Override public void execute...

    Quartz Job Scheduling Framework 中文版 V1.0.0.rar

    Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个框架允许开发者创建、组织和执行定时任务,从而实现应用中的自动化工作流程。Quartz 中文版 V1.0.0...

    Quartz Job Scheduling Framework 中文版 chm版

    Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个框架允许开发者在程序中定义作业(Job)和触发器(Trigger),以实现定时执行特定任务,无需手动...

    Quartz Job Scheduling Framework 中文版

    Quartz Job Scheduling Framework 是一个强大的、开源的Java作业调度框架,它允许应用程序定义和执行复杂的定时任务。这个框架的设计目标是提供一个简单且可扩展的解决方案,用于在分布式环境中调度作业。Quartz的...

    Quartz Job Scheduling Framework 中文版 V0.9.2

    Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个中文版V0.9.2的文档可能是针对Quartz的一个早期版本的翻译,帮助中国开发者更好地理解和使用这一...

    Quartz Job Scheduling Framework第11章翻译初稿

    Quartz Job Scheduling Framework是一个强大的、开放源代码的作业调度框架,它使应用程序能够在指定的时间执行任务,无需人工干预。这个框架广泛应用于Java应用程序中,用于实现定时任务和工作流管理。在第11章中,...

    Quartz Job 中文文档 CHM格式

    Quartz Job是一个强大的任务调度框架,它为Java应用程序提供了丰富的定时任务管理能力。Chuck Cavaness是Quartz的作者,而Unmi(隔叶黄莺)则是中文版文档的翻译者,使得中国的开发者能更好地理解和应用这个框架。该...

    Quartz Job Scheduling Framwork中文文档

    该文档“Quartz Job Scheduling Framework 中文版 V0.9.5.chm”是Quartz的中文版使用手册,包含了关于如何在项目中应用Quartz的详细信息。下面将对其中的关键知识点进行深入探讨: 1. **Job和Trigger**:在Quartz中...

    Quartz Job Scheduling Framework.chm

    Quartz Job Scheduling Framework.chm

    Quartz Job Scheduling Framework 中文版 V0.9.5 API帮助文档

    Quartz Job Scheduling Framework 是一个开源的作业调度框架,它为Java应用程序提供了强大的定时任务管理功能。这个框架允许开发者精确地安排任务执行,无论是简单的单次执行还是复杂的重复任务计划。V0.9.5是Quartz...

    Quartz Job Scheduling Framework

    Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。

    Quartz Job Scheduling Framework 中文版 V1.0.0.chm

    把本人博客上零零散散,顺序错乱的各篇译章汇集成册,做成了一个 《Quartz Job Scheduling Framework 中文版.chm 》文件与各位分享,以方便大家的阅读。另外,每篇译章都有到达我的博客上所对应页面的链接,所以有...

    Quartz Job Scheduling Framework第5章翻译初稿

    Quartz Job Scheduling Framework是一个广泛使用的开源作业调度框架,它允许开发者精确地安排任务执行,以实现自动化的工作流程。在本章中,我们将深入探讨Quartz的核心特性之一——Cron Triggers,以及与之相关的...

    Spring3.2.3+Quartz2.2 整合配置

    在上述配置中,`jobExecutionService`是自定义的Job执行类,它需要实现`org.quartz.Job`接口或者使用Spring的`MethodInvokingJobDetailFactoryBean`来调用特定方法。`CronTriggerFactoryBean`用于设置触发器的执行...

    Quartz_Job+Scheduling_Framework

    任务、 Unix/Linux 下的 Cron ,但 Quartz 可以把排程控制的更精细。也许大多数人听说 Quartz 是在学习或使用 Spring 的时 候,也就是 Spring 整合了 Quartz。而我也不例外,同样是在春天里得悉了这块石英。 当初...

    Spring_MongoDb_Quartz_Cluster:Spring_MongoDb_Quartz_Cluster

    Spring_MongoDb_Quartz_Cluster #这在mvn中央存储库中不可用。 com.novemberain quartz-mongodb 2.0.0-rc2 #然后,您必须在侧边项目标签crystal quartz-mongodb

    Quartz定时任务常用的11张数据库脚本表结构

    每个Job实例在此表中对应一条记录,Job的唯一标识由`SCHED_NAME`(调度器实例名)和`JOB_NAME`(Job名)及`JOB_GROUP`(Job组名)共同确定。 2. **QRTZ_TRIGGERS**:该表用于保存Trigger信息,包括触发时间、触发...

    quartz job 配置手册

    Quartz Job配置手册是针对Java应用或环境中的强大调度功能集成的一份详尽指南。Quartz是一个开源的作业调度框架,它允许开发者精确地安排任务执行时间,从而实现自动化的工作流程。下面将深入探讨Quartz Job配置的...

Global site tag (gtag.js) - Google Analytics