Quartz

は、Java開発者が指定された日時にジョブをスケジューリングできるようにする、強力で高度なスケジューラーフレームワークです。

このチュートリアルでは、Quartz 1.6.3を使用してスケジューラジョブを開発する方法を説明します。

1. Quartzをダウンロードする

Quartzライブラリはhttp://www.quartz-scheduler.org/[公式サイト]またはMavenの中央リポジトリから入手できます

ファイル:pom.xml

    <dependencies>

        <!-- Quartz API -->
        <dependency>
            <groupId>opensymphony</groupId>
            <artifactId>quartz</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.directory.studio</groupId>
            <artifactId>org.apache.commons.logging</artifactId>
            <version>1.1.1</version>
        </dependency>

    </dependencies>

2.クォーツジョブ

Quartzジョブは実行したいものが定義されていますか?

ファイル:HelloJob

package com.mkyong.common;

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

public class HelloJob implements Job
{
    public void execute(JobExecutionContext context)
    throws JobExecutionException {

        System.out.println("Hello Quartz!");

    }

}

3.クォーツトリガー

Quartzトリガは、Quartzが上記のQuartzの仕事を実行するときに定義されますか?

Quartzトリガには2種類あります。

  • SimpleTrigger – 開始時間、終了時間、繰り返し間隔を設定できます。

  • CronTrigger – Unixのcron式で日付と時刻を指定できます

あなたの仕事を実行する時間。

Unixのcron式Unixのcron式は非常に柔軟で強力です。次のWebサイトで多くのcron式の例を習得してご覧いただけます。

SimpleTrigger – 30秒ごとに実行します。

        SimpleTrigger trigger = new SimpleTrigger();
        trigger.setName("dummyTriggerName");
        trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
        trigger.setRepeatCount(SimpleTrigger.REPEAT__INDEFINITELY);
        trigger.setRepeatInterval(30000);

CronTrigger – 30秒ごとに実行します。

        CronTrigger trigger = new CronTrigger();
        trigger.setName("dummyTriggerName");
        trigger.setCronExpression("0/30 **  **  **  **  ?");

4.スケジューラ

Schedulerクラスは、 ”

Job

“と ”

Trigger

“の両方をリンクして実行します。

        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);

5.完全な例

SimpleTriggerとCronTriggerを使用して、Quartzを使用する2つの完全な例を以下に示します。

  • SimpleTriggerの例** 最初の実行時に1秒の遅延で30秒間実行します。

package com.mkyong.common;

import java.util.Date;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;

public class SimpleTriggerExample
{
    public static void main( String[]args ) throws Exception
    {
        JobDetail job = new JobDetail();
        job.setName("dummyJobName");
        job.setJobClass(HelloJob.class);

       //configure the scheduler time
        SimpleTrigger trigger = new SimpleTrigger();
        trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
        trigger.setRepeatCount(SimpleTrigger.REPEAT__INDEFINITELY);
        trigger.setRepeatInterval(30000);

       //schedule it
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);

    }
}

  • CronTriggerの例** 同じですが、30秒ごとにジョブを実行します。

package com.mkyong.common;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.impl.StdSchedulerFactory;

public class CronTriggerExample
{
    public static void main( String[]args ) throws Exception
    {

        JobDetail job = new JobDetail();
        job.setName("dummyJobName");
        job.setJobClass(HelloJob.class);

        CronTrigger trigger = new CronTrigger();
        trigger.setName("dummyTriggerName");
        trigger.setCronExpression("0/30 **  **  **  **  ?");

       //schedule it
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);

    }
}

ソースコードをダウンロードする

ダウンロードする – リンク://wp-content/uploads/2010/04/QuartzExample.zip[QuartzExample.zip](14kb)