关于java:Quartz作业未触发

Quartz job not firing

我提到了一个先前的问题,在Quartz属性中发现它不会触发Quartz Job,并从中大量借用了(成为Quartz和所有对象的新手),但我的工作似乎并没有被解雇。

我的quartz.properties

1
2
3
4
5
6
7
8
9
10
11
12
13
14
org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

#===================================================
# Configure the Job Initialization Plugin
#===================================================

org.quartz.plugin.triggerHistory.class: org.quartz.plugins.history.LoggingTriggerHistoryPlugin
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: 10
org.quartz.plugin.jobInitializer.wrapInUserTransaction: false

我的quartz-job.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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">

    <schedule>
        <job>
            <name>myjob</name>
            <group>MYJOBGROUP</group>
            <description>Job to Test</description>
            <job-class>com.mpm.epick.enotify.EmailNotifier</job-class>
        </job>
        <trigger>
            <cron>
                <name>my-trigger</name>
                <group>MYTRIGGER_GROUP</group>
                <job-name>myjob</job-name>
                <job-group>MYJOBGROUP</job-group>
                <cron-expression>* * * * * ?</cron-expression>
            </cron>
        </trigger>
    </schedule>

</job-scheduling-data>

我在web.xml中添加的零件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!-- added by ck -->
<context-param>
    <param-name>quartz:config-file</param-name>
    <param-value>quartz.properties</param-value>
</context-param>
<context-param>
    <param-name>quartz:shutdown-on-unload</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>quartz:wait-on-shutdown</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>quartz:start-scheduler-on-load</param-name>
    <param-value>true</param-value>
</context-param>

<listener>
    <listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class>
</listener>

<servlet>
    <servlet-name>QuartzInitializer</servlet-name>
    <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
    <init-param>
        <param-name>shutdown-on-unload</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>
<!-- end additions -->

我希望运行的类文件,`EmailNotifier'(现在它只是一个Stubbing实现):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.mpm.epick.enotify;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class EmailNotifier implements Job {

    public EmailNotifier() {}

    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Cron executing");
    }

}

因此,我观察到的是我的调度程序可以正常启动/停止,如以下调试行所示:

1
2
INFO: QuartzInitializer: Scheduler has been started...
INFO: QuartzInitializer: Quartz Scheduler successful shutdown.

但是在我的控制台上,我根本看不到调试行。我尝试了日志文件,但也不存在。

我想丢点东西解雇我吗?


我想知道这是否可能是因为您的cron表达式很奇怪。我不确定" * * * * *?"表达式的意图是什么,但是如果您希望它每秒触发一次,则可能应该使用" 0/1 * * * *?"。有关构建cron表达式的更多信息,请参见http://quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-06。