quartz常见问题

quartz.properties自定义位置 最近在做用jmx远程管理quartz定时任务。配置方法是在quartz.properties里加 org.quartz.scheduler.jmx.export = true 但是对于quartz.properties这个配置文件放在哪没有具体说明。看了官方的英文文档,说是放在classpath根目录下,如果是web项目,应该就是资源文件目录下。 照着做了,结果没成功,Mbean里没有q 阅读详情

一、配置job的xml里<start-time>的时间格式:

从源码JobSchedulingDataProcessor类中可以看出:格式例如(2012-03-31T05:55:00)

    /**
     * XML Schema dateTime datatype format.
     * <p>
     * See <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#dateTime">
     * http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#dateTime</a>
     */
    protected static final String XSD_DATE_FORMAT = "yyyy-MM-dd'T'hh:mm:ss";

[html]  view plain copy
  1. <start-time>2011-05-17T15:53:00</start-time>   
二、quartz.properties配置filename:

应该是org.quartz.plugin.jobInitializer.fileNames = my_quartz_jobs.xml

而不是org.quartz.plugin.jobInitializer.fileName = my_quartz_jobs.xml

这个应该和quartz的jar包版本有关,具体哪个版本使用哪个么有研究。

否则可能会报错:

Exception in thread "main" org.quartz.SchedulerException: JobStore SchedulerPlugin 'org.quartz.plugins.xml.JobInitializationPlugin' props could not be configured. [See nested exception: java.lang.NoSuchMethodException: No setter for property 'fileName']
 at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1013)
 at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1399)
 at org.quartz.impl.StdSchedulerFactory.getDefaultScheduler(StdSchedulerFactory.java:1415)
 at com.gyb.JobScheduler.startScheduler(JobScheduler.java:28)
 at com.gyb.JobScheduler.main(JobScheduler.java:23)
Caused by: java.lang.NoSuchMethodException: No setter for property 'fileName'
 at org.quartz.impl.StdSchedulerFactory.setBeanProps(StdSchedulerFactory.java:1287)
 at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1011)
 ... 4 more

三、quartz.properties配置插件由于版本的不同配置发生改变:

//quartz1.6的


  1. org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.JobInitializationPlugin  

 变为

//quartz 1.8

Java代码   收藏代码
  1. org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin  



 附:网上整理的问题

问题1.
应用服务器启动状态下,当对任务进行了修改时(即修改了job.xml中的任务明细),Quartz无法响应这种变化.也就是说,Quartz并没有进行"有状态"作业!
需求:
无论是修改了任务明细中的参数列表--JobDataMap,或是CronExpression中的定时表达式,都应该立即做出响应,并按照新的配置参数去执行这个任务.
解决: 
在quartz.properties中加入下面两行配置即可:
#自动扫描任务单并发现改动的时间间隔,单位为秒
org.quartz.plugin.jobInitializer.scanInterval = 10
#覆盖任务调度器中同名的jobDetail,避免只修改了CronExpression所造成的不能重新生效情况
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
 
问题2:
测试任务单变更自检的问题时,突然发现,当通过web页面提供的任务配置接口进行报表订阅任务的新增、修改等操作时,由于job.xml是在classes目录下,所以tomcat会进行自动的reload(hot deploy).这看起来好象没什么问题,但在实际的应用环境下却非常危险,因为web.xml中配置的随tomcat启动而启动的程序都会reload.可能这些程序很简单,并不会产生什么问题,但我们的软件则不同,随tomcat的启动,会有很多服务被启动并进行着极为复杂的操作,所以classes目录下的程序配置项都不会轻易修改.即使是修改,那也会重新启动tomcat使服务正常运转. 修改了任务单后发现某个服务出现了Illegal Access问题.
解决:
Quartz的两个主要配置文件名称可变,而且是从web.xml加载quartz.properties,又从quartz.properties找到job.xml,那么job.xml没必要放到classes目录下。拿到web目录下,就放到config/job.xml,然后修改quartz.properties文件,将文件指向修改成绝对路径:
org.quartz.plugin.jobInitializer.fileName = D:/tomcat/webapps/report/config/job.xml
job.xml无论如何变更,tomcat都不会reload,因为它已经不在classes目录下了。
 
问题3:
在Debug过程中,发现Quartz的一个小问题,可能会对资源造成无谓的占用,那就是当一个任务从job.xml中被删除时,Quartz是不会响应这种减少任务的改变且此任务的进程仍然被占用,而且任务还会被执行。
解决:
可以考虑在JobDataMap中增加是否执行的配置项,即使任务会执行,但根据这种配置项,仍然可以拒绝下一步的操作.当然了,修改CronExpression使之成为一个永远不会执行到的时间也是一个办法.
 
问题4:
如何使Quartz加载多个job.xml
解决:
实现SchedulerPlugin接口并提供多任务文件加载功能,将会是解决这个事情的好方法

Quartz配置无效?解决方案和示例代码 通过使用上述解决方案和示例代码,您应该能够解决Quartz配置无效的问题,并成功运行和调度您的计划任务。记住,正确的配置和依赖项是确保Quartz正常工作的关键。确保您的项目中包含了所有必需的依赖项,并且它们的版本与Quartz兼容。确保您正确设置了所有必需的配置项,并且每个配置项的值符合要求。不同的配置项具有不同的含义和取值范围,因此请查阅Quartz文档以确保正确配置各个项。Quartz配置文件采用属性键值对的形式进行配置。确保您的配置文件格式正确,每个配置项都有正确的键和值,并且没有任何语法错误。 阅读详情

相关推荐

在Windows 11上用VirtualBox搞定WRF-Hydro 5.2.0:一个水文模型小白的Ubuntu 22.04虚拟机避坑实录

本文详细记录了在Windows 11上使用VirtualBox和Ubuntu 22.04虚拟机成功编译安装WRF-Hydro 5.2.0水文模型的全过程。从虚拟环境配置、依赖库安装到环境变量设置,作者分享了针对Linux新手的实用避坑技巧和关键命令,帮助科研人员高效完成水文模型的环境搭建。

weixin_30733003的博客 354

若依 Quartz 定时任务, 配置后不生效执行

看一下 ScheduleConfig 配置文件, 是否 配置了集群等配置,配置集群可能导致 配置的定时任务不生效, 将这个配置去掉。如果有集群再重新配置。

qq_41499710的博客 3768

开源PACS系统Orthanc(DICOM服务器)配置

PACS(Picture Archiving and Communication System)是医学影像的数字化存储、检索和传输系统,用于管理和存储医学图像和相关信息,如放射学、核医学、超声、病理学等各种医学影像。PACS系统通过数字化技术取代了传统的胶片方式,使医疗机构能够更高效地存储、传输和查看医学图像,从而提高了医疗图像的管理和工作流程。

qq_42231043的博客 6251

quartz框架(二)-调度器创建之配置文件加载

配置文件源码解析 博主的前一篇博文主要介绍了quartz的入门使用,现在博主就来讲解一下quartz配置文件的加载流程。 代码回顾 public class Main { public static void main(String[] args) throws SchedulerException { //创建一个jobDetail的实例,将该实例与HelloJob Class绑定 JobDetail jobDetail = JobBuilder.newJob(Te

coderchenhao的博客 933

开源:AI+无人机巡检系统项目调研

本文系统梳理了主流开源无人机巡检技术栈,涵盖飞控系统(PX4/ArduPilot)、地面站软件(QGroundControl)、AI视觉识别(VisDrone/MPID/CPLID数据集)、三维重建(OpenDroneMap/COLMAP)和仿真模拟(AirSim/Gazebo)五大领域。通过对比各项目的技术特点、开发语言、开源协议及商用友好度,为无人机巡检产品开发提供完整的技术选型参考。重点推荐PX4飞控、DroneKit开发API等商用友好项目,同时分析了GPL/AGPL协议项目的开源要求。

lovehu6686的博客 2452

商品评论中的实体情感分析

在之前的文章中我已经将商品评论中的评价实体,也就是特征(feature)给挖掘出来了,我看了一下,挖掘的效果还是不错的。原文链接:http://blog.youkuaiyun.com/chixujohnny/article/details/52794685 下面一步要做的是施加情感因子,也就是说,要将人们评论时候所连带的感情程度施加一下。这项任务的归类应该是情感分析技术。 目前该类问题的情感分析技

chixujohnny 7971

Quartz Manager 项目常见问题解决方案

Quartz Manager 项目常见问题解决方案 一、项目基础介绍 Quartz Manager 是一个为 Quartz Scheduler 提供REST API和UI控制台管理工具的Java库。它允许用户通过HTTP请求或图形化界面来控制和监控Quartz调度器中的作业。这个项目主要使用Java语言开发,同时包含了用于前端界面的HTML、CSS和JavaScript代码。 二、新手常见问题及解...

gitblog_00299的博客 974

【GameFramework框架】三、快速启动

这篇文章就带领大家如何快速启动GameFramework框架。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 4427

Quartz 项目常见问题解决方案

Quartz 项目常见问题解决方案 【免费下载链接】quartz ???? a fast, batteries-included static-site generator that transforms Markdown content into fully functional websites ...

gitblog_00786的博客 481

YOLOv11与CLIP融合的零样本目标检测技术:原理、实现与创新实践

YOLO(You Only Look Once)系列作为单阶段检测器的代表,以其实时高效的特性在工业界获得广泛应用。YOLOv11作为该系列的最新演进,引入了多项架构创新: C3K2模块:采用双小卷积核替代传统大卷积核,在保持感受野的同时减少计算量。当参数c3k=False时退化为YOLOv8的C2F模块,提供灵活的精度-效率权衡。 C2PSA(Convolutional block with Parallel Spatial Attention):通过并行空间注意力机制增强对微小目标的特征提取能力,这对

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1068

深入解析雪球网股票行情数据爬取:基于WebSocket与API的实时数据获取技术实践

本文详细介绍了如何使用Python爬虫技术获取雪球网的股票行情数据,涵盖了WebSocket实时数据连接和RESTful API接口调用两种主要技术方案。完整的WebSocket客户端,支持实时行情订阅和数据处理功能丰富的API客户端,支持多种数据类型的获取数据存储和管理系统,使用SQLite进行数据持久化实时监控和预警系统,支持自定义预警规则技术指标计算,提供基本的数据分析功能。

2201_76125261的博客 1256

Quartz-Redis-JobStore 项目常见问题解决方案

Quartz-Redis-JobStore 项目常见问题解决方案 1. 项目基础介绍和主要编程语言 Quartz-Redis-JobStore 是一个开源项目,它提供了一个使用 Redis 作为存储后端的 Quartz Scheduler JobStore 实现。Quartz 是一个开源的作业调度库,它允许你以编程方式创建、调度和管理工作。这个项目的主要目的是利用 Redis 的高性能和分布式特性...

gitblog_01042的博客 844

【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04

Jeson Orin Nano系列:烧写Ubuntu22.04 电脑主机可以是Ubuntu20.04

郭老二 4896

Quartz定时任务使用教程及常见问题解决

OverrideSystem.out.println("任务执行时间:" + new Date());

优快云博客技术,java高级工程师,业务层架构师,高级管理认证,毕业设计可以联系我 1031

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Quartz Scheduler 项目常见问题解决方案

Quartz Scheduler 是一个功能丰富的开源作业调度库,能够集成到几乎任何 Java 应用程序中,从小型的独立应用程序到大型电子商务系统。该项目的主要编程语言是 Java。 ## 新手使用注意事项及解决方案 ### 1. 依赖管理问题 **问题描述**:新手在引入 Quartz Scheduler 时,可能会遇到依赖管理问题,尤其是在使用 Maven 或 Gradle 进行项目构建...

gitblog_00500的博客 1286

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

spring quartz定时器的简单配置使用以及常见问题解答

Spring当中有几种定时器的方法,而quartz是使用比较广泛的一种方法,相较于自己在代码中用thread、timerTask和Timer等方法, quartz无疑更简单。第一次上手quartz时关于Spring的架构还不清楚,不过好在网上连接很多,自己也是摸索了好半天才配置好。现在把自己的完整配置过程给大家讲一下。 第一步首先就是到网上下载合适的quartz.jar包。我自己下载的是2.2.

hellowangxyue的专栏 793

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SpringMVC:Quartz常见问题

Quartz常见问题

一些平时在开发过程中遇到的常见问题,分享给大家 528
上一篇: TCP/IP、Http、Socket的区别
下一篇: eclipse实现JavaWeb应用增量打包
school11
博客等级 码龄19年 3粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值