栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

记一次使用Quartz集群环境下,trigger

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记一次使用Quartz集群环境下,trigger

项目场景:

项目里采用的定时任务是Quartz,配置的是集群持久化,多台节点连接同一个数据库。


问题描述:

新加的定时任务,跑了一两次就不执行了。一查询该任务的触发器状态变成ERROR,日志报Couldn’t retrieve job because a required class was not found;


原因分析:

因为是集群,有多个节点。报这个错误的意思是有节点执行定时任务时没有找到定时器的类,所以就把该定时任务的触发器的状态置为了ERROR。

可能的原因就是节点代码版本不一致。但是我反复确认了一下,代码版本都是一致的,后来我查询qrtz_job_details表一看,终于找到了问题所在,存在表里的job_class_name字段是代理类的路径。这就奇了怪了,为什么构建job信息获取bean的是代理类的路径。


一看是动态代理,应该是使用springAOP出现的问题。再一看项目里原来用AOP设置了切面进行异常日志的记录,拦截了所有的业务目录下的包。


解决方案:

在切面注解里排除掉定时任务的类,重启启动,在创建定时任务时获取到的就是路径正常了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/310693.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号