问题

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

转载于:https://www.cnblogs.com/ivanfu/archive/2012/04/27/2474325.html

Quartz job Cluster下报错相关推荐

  1. shell文件管理jenkins构建过程---window环境下报错:找不到shell文件

    window环境下报错:找不到shell文件.查看jenkins本地文件,可以查看到shell文件: 检查job配置: 发现使用的是Execute shell; 这个项目只能在liunx下使用,在wi ...

  2. explode php 报错,ecshop在php5.4下报错怎么办

    ecshop在php5.4下报错的解决办法:1.打开"cls_template"文件,并修改"$tag_sel=array_shift(explode(' ',$tag) ...

  3. linux32位运行64位程序,32位windows下可以运行的程序在64位linux下报错

    已结贴√ 问题点数:20 回复次数:3 32位windows下可以运行的程序在64位linux下报错 filt.c在32位windows code:blocks 10.05下运行无任何异样. 传到64 ...

  4. Release下报错,Debug下正常原因总结

    首先介绍如何在Release模式下调试: 步骤如下:         说明:ASSERT宏在发行版本中不起作用,而应该用VERIFY来进行发行版的调试.如果发行版本运行有问题,可以先禁止所有代码优化再 ...

  5. 在centos下报错:-bash: apt-get: 未找到命令

    报错: 在centos中执行apt-get命令提示apt-get command not found 解决方法: 在centos下用 yum install xxx

  6. Ubuntu下报错PCIe Bus Error:severity=Corrected, type=Physical Layer, id=00e8(Receiver ID)

    报错原因:大致是Ubuntu下外设驱动不完善导致的 解决方案:修改grub文件,具体操作如下 # 使用sudo权限打开grub文件 sudo -H gedit /etc/default/grub# 修 ...

  7. 奇怪的bug,不懂Atom在添加markdown-themeable-pdf,在配置好phantomjs的情况下报错

    本来打算用一下atom但是导出pdf报错,可是在预览的情况下就没有问题,顺便吐槽一下谷歌浏览器自己的markdown在线预览插件无法适配,用搜狗搭载谷歌的插件才能导出pdf,一下感觉逼格少了很多,等忙 ...

  8. 代码在eclipse下不报错,在doc命令行下报错--jar file和runable jar file

    今天开发一个小工具,引用了Log4j,来记录日志,在eclipse下运行,代码正常,打包成jar放到doc命令行下运行报错: Exception in thread "main" ...

  9. thinkphp php5.4报错,ThinkPHP6.0在PHP8下报错解决方法

    最新6.0.6已经支持PHP8.0,建议直接升级ThinkPHP版本! PHP8下全新安装ThinkPHP6.0.X出现报错,如下Deprecated: Method ReflectionParame ...

  10. 使用for of循环遍历获取的nodeList,配置babel编译,webpack打包之后在iphone5下报错...

    报错信息: Symbol.iterator is not a function [duplicate] 代码示例: function insertCta() {let ctaArr = Array.f ...

最新文章

  1. H5新特性 input type=date 在手机上默认提示显示无效解决办法
  2. 【数字信号处理】线性时不变系统 LTI “ 输入 “ 与 “ 输出 “ 之间的关系 ( 周期性分析 | 卷积运算规律 | 交换律 | 结合律 | 分配率 | 冲击不变性 )
  3. opencv 图像 抠图 算法_我讨厌这个绿油油的头像!我用opencv换一下背景
  4. Linux下svn新建用户,Linux下建立svn工程
  5. 2017广西邀请赛重现赛
  6. python自动发送邮件不需要发件邮箱_python使用QQ邮箱实现自动发送邮件
  7. python字典替换值_python字典改变value值方法总结
  8. 某公司为本科以上学历的人重新分配工作,分配原则如下。 (1)如果年龄不满18岁,学历是本科,男性要求报考研究生,女性则担任行政工作; (2)如果年龄满18岁不满5o 岁,学历本科,不分男女,任中层领导
  9. 某微型计算机指令格式如图,组成原理考试试卷
  10. linux查看程序写文件内容,Linux 文件内容查看命令
  11. 收集灵感必备|文字这样组合排版那才叫设计
  12. React Native 从入门到原理
  13. oracle typehandler,Mybatis实现自定义的类型转换器TypeHandler
  14. php5.6 mysql被重置_php5.6连接mysql8出现错误解决方法
  15. mysql分割字符串_mysql分割字符串
  16. 为什么公务员需要考MPA?
  17. 2020年中级数据库系统工程师考试笔记7—关系数据库1
  18. matlab 期权图,如何使用matlab计算期权价格
  19. Java入门的学习方法及路线
  20. IsEmpty 函数

热门文章

  1. 安装 EoLinker_4.0 开源版
  2. c语言 链接器 原理,新手向的链接器知识普及/////就是这样的说
  3. 《神奇的数学》读后感_数学家的眼光读后感
  4. java中reg=new,JavaScript replace new RegExp使用介绍
  5. 使用tp5.1写api接口的流程
  6. dubbox 2.8.4的配置和使用
  7. 升级Linux(Ubtun/CentOS)的OpenSSL(openssl-1.0.1h.tar.gz)
  8. MongoDB 数据集合导出 与 导入
  9. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_12-删除页面-服务端-接口开发...
  10. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第1节 基础加强_4_Junit_@Before@After...