1

Quartz プロパティで見つかった以前の質問はQuartz Job をトリガーしませんを参照し、そこから大量に借りました (Quartz とすべての初心者であるため) が、私の仕事は起動していないようです。

私のquartz.properties

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

<?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:

<!-- 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」(現在は単なるスタブ実装です):

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 ");
    }

}

したがって、次のデバッグ行に示されているように、スケジューラが正常に開始/停止できることがわかります。

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

しかし、私のコンソールでは、デバッグ行がまったく表示されません。ログファイルを試しましたが、そこにもありませんでした。

仕事を解雇するために何か不足していますか?

4

1 に答える 1

1

これは、cron 式が奇妙であることが原因である可能性があるのではないかと考えています。「* * * * * ?」の意図がわかりません。式ですが、毎秒起動したい場合は、おそらく「0/1 * * * * ?」を使用する必要があります。cron 式の構築の詳細については、http: //quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-06を参照してください。

于 2012-11-04T16:24:55.737 に答える