我正在使用Spring Quartz集成,每次我尝试关闭Tomcat时,Quartz进程都无法关闭.这是堆栈跟踪:
Exception in thread "org.springframework.scheduling.quartz.SchedulerFactoryBean#0_QuartzSchedulerThread"
java.lang.NullPointerException
at org.apache.commons.logging.LogFactory.getCachedFactory(LogFactory.java:979)
at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:435)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
at org.quartz.core.QuartzSchedulerThread.getLog(QuartzSchedulerThread.java:475)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:404)
Run Code Online (Sandbox Code Playgroud)
以前有人看过这个吗?
我在我正在创建的Windows服务中使用Quartz.NET,我想要一种迭代所有作业以检测它是否被暂停的方法.如何检查作业是否暂停?我在JobDetail类中找不到合适的方法.
谢谢
我想将我的日志存入文件:这是我在Config.groovy中声明我的appender的方法:
log4j = {
appenders {
// console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
file name: "scraperServiceDetailedLogger",
file: "target/scraperServiceDetailed.log"
file name: "scraperServiceLogger",
file: "target/scraperService.log"
file name: "filterLogger",
file: "target/filter.log"
}
error 'org.codehaus.groovy.grails.web.servlet', // controllers
'org.codehaus.groovy.grails.web.pages', // GSP
'org.codehaus.groovy.grails.web.sitemesh', // layouts
'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
'org.codehaus.groovy.grails.web.mapping', // URL mapping
'org.codehaus.groovy.grails.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
error scraperServiceDetailedLogger: "grails.app.service.personalcreditcomparator.ScraperService"
info scraperServiceLogger: "grails.app.jobs.personalcreditcomparator.ScraperJob"
info filterLogger: "grails.app.conf.personalcreditcomparator.AdministratorInterfaceProtectorFilters"
}
Run Code Online (Sandbox Code Playgroud)
3个文件已正确创建,但只能正确scraperServiceDetailedLogger存储日志.其他两个文件仍为空.
调用时会遵守日志记录级别log.
我错过了什么?
感谢您提供的任何帮助.
我想在我的小而简单的 Web 应用程序中使用石英。(石英 2.1.6 和 tomcat 7.0.22)。我想在不重新启动我的应用程序的情况下更改触发器 cron 表达式。我将工作放在 xml 文件中quartz-jobs.xml并XMLSchedulingDataProcessorPlugin在quartz.properties
问题:当我更改内容时quartz-jobs.xml,quartz deceted 文件被更改并重新加载,删除并创建新作业。我在日志文件中看到它。但是这个文件的内容是旧的(和启动时一样)。
所以我在文件系统中有新版本的quartz-jobs.xml,但石英采用了该文件的旧版本。
文件系统是带有默认设置的普通 ext4。
那么,如何从 xml 文件刷新石英作业和触发器?
这是我的配置:
石英属性:
org.quartz.scheduler.instanceName = SMSScheduler
org.quartz.threadPool.threadCount = 1
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.scheduler.skipUpdateCheck=true
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz-jobs.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 30
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false
Run Code Online (Sandbox Code Playgroud)
石英-jobs.xml
<?xml version='1.0' encoding='utf-8'?>
<job-scheduling-data xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
version="1.8">
<pre-processing-commands>
<delete-jobs-in-group>REPORT_GROUP</delete-jobs-in-group>
<delete-triggers-in-group>REPORT_TRIGGER_GROUP</delete-triggers-in-group>
</pre-processing-commands>
<schedule>
<job>
<name>report-job</name>
<group>REPORT_GROUP</group>
<description>Create report</description>
<job-class>com.company.quartz.ReportJob</job-class>
</job>
<trigger>
<cron> …Run Code Online (Sandbox Code Playgroud) 我想让我的 cron 每两天执行一次工作。因此,如果我在 5 月 25 日执行作业,它将在 25、27、29、31、6 月 2 日、6 月 4 日运行。
但问题是,在 5 月 31 日结束后,cron 将重置并在 6 月 1 日、6 月 3 日、6 月 5 日开始运行......而不是 6 月 2 日、6 月 4 日......
下面是我的代码..
CronTrigger cronTrigger = newTrigger()
.withIdentity("trigger1", "testJob")
.startAt(startDate)
.withSchedule(CronScheduleBuilder.cronSchedule( * * * 1/2 * ?")
.withMisfireHandlingInstructionDoNothing())
.build();
Run Code Online (Sandbox Code Playgroud) 在 Quartz 1.0.x 中,可以通过简单地设置触发器上的 MisfireInstruction 来设置它:
trigger.MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing;
Run Code Online (Sandbox Code Playgroud)
我们将 Quartz 版本升级到 2.3.2,现在不能再这样设置了,因为trigger.MisfireInstruction已经没有 setter 了。
现在如何在触发器上设置 MisfireInstruction?
我尝试使用 TriggerBuilder 重新创建触发器,如下所示:
trigger = trigger.GetTriggerBuilder()...
Run Code Online (Sandbox Code Playgroud)
但我也找不到 TriggerBuilder 上的 MisfireInstruction-Method。
谢谢你的帮助
我用石英调度程序创建了asp.net站点.作业在后台运行,网站上没有其他活动.
Quartz调度程序每30分钟安排一次.
IIS启动后,Scheduler正常运行.
但过了一段时间,Scheduler停止运行(大约1小时).
如果在站点上有一个或多个活动作为用户登录或查看仪表板,则Scheduler会正确运行.
但是当现场没有任何活动时,它就会停止运行.
如果现场没有活动,如何保持我的调度程序的所有时间?
P/s:我知道我的问题可能与其他问题重复.但我仍然会问,因为我无法评论其他问题的答案.
编辑:
Day Running at: 7/14/2016 4:00:00 AM
--
Day Running at: 7/14/2016 4:30:00 AM
--
Day Running at: 7/14/2016 5:00:00 AM
--
Stopped running
--
Day Running at: 7/14/2016 2:00:00 PM
--
Day Running at: 7/14/2016 2:30:00 PM
--
Day Running at: 7/14/2016 3:00:00 PM
--
Stopped running
--
Run Code Online (Sandbox Code Playgroud) 嗨,我是 Quartz Scheduler 的新手,我是第一次实现它。我想知道调度程序的开始调用是否会执行暂停的作业?或 暂停的工作将仅通过恢复调用而不会被激活。请帮我。
最近我尝试配置我的 grails 应用程序以与石英调度程序一起使用。不幸的是,我未能配置 JDBC 作业存储。石英插件似乎忽略quartz.properties文件,其中表前缀定义为Z_STAFF_SCHEDULER. 应用程序启动失败,但有异常:
引起:org.springframework.scheduling.SchedulingException:无法启动Quartz Scheduler;嵌套异常是 org.quartz.SchedulerConfigException: 作业恢复期间发生故障。[参见嵌套异常:org.quartz.impl.jdbcjobstore.LockException:获取数据库行锁失败:表'testing.qrtz_locks'不存在[参见嵌套异常:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表' testing.qrtz_locks' 不存在]]
这是中的相关代码application.groovy:
quartz {
autoStartup = true
jdbcStore = true
waitForJobsToCompleteOnShutdown = true
exposeSchedulerInRepository = false
props {
scheduler.skipUpdateCheck = true
}
}
environments {
test {
quartz {
jdbcStore = false
autoStartup = false
}
}
}
grails.config.locations = ["classpath:conf/quartz.properties"]
Run Code Online (Sandbox Code Playgroud)
这是我的配置quartz.properties:
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = StaffScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class …Run Code Online (Sandbox Code Playgroud) 我想使用 Quartz 和 Oracle 作为 JobStore 来安排作业。我看到大多数使用 RAMjobstore 的示例(当然不是持久的),但几乎没有任何示例可以帮助我满足 Spring boot + Quartz + Oracle 开发的需求。
任何代码示例或 github 项目的链接或帮助将不胜感激。
quartz-scheduler ×10
c# ×3
java ×3
quartz.net ×3
grails ×2
.net ×1
asp.net ×1
cron ×1
file ×1
filter ×1
grails3.2.0 ×1
logging ×1
oracle ×1
spring ×1
spring-boot ×1
tomcat ×1