Quartz フレームワークを使った最初のプログラム

JavaJavaBeginner
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、Quartz フレームワークを使って、ユーザーに目覚めるように促す、歯を磨くように促す、顔を洗うように促すという簡単なジョブをスケジュールして実行する方法を学びます。

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • RemindJob クラスで Job インターフェイスを実装して、実行する必要のあるタスクを定義する方法
  • RemindScheduler クラスを実装して、Quartz Scheduler を使って RemindJob をスケジュールして実行する方法
  • RemindScheduler クラスのスケジューリング機能を検証するためのテスト関数を書く方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • Quartz フレームワークを使ってジョブをスケジュールして実行する
  • ジョブ用の JobDetailTrigger インスタンスを作成して構成する
  • Quartz Scheduler を起動して停止する
  • アプリケーションの機能を検証するためのテスト関数を書く

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ConcurrentandNetworkProgrammingGroup(["Concurrent and Network Programming"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/output("Output") java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/date("Date") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/oop("OOP") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/interface("Interface") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/ConcurrentandNetworkProgrammingGroup -.-> java/threads("Threads") subgraph Lab Skills java/output -.-> lab-300366{{"Quartz フレームワークを使った最初のプログラム"}} java/method_overloading -.-> lab-300366{{"Quartz フレームワークを使った最初のプログラム"}} java/classes_objects -.-> lab-300366{{"Quartz フレームワークを使った最初のプログラム"}} java/date -.-> lab-300366{{"Quartz フレームワークを使った最初のプログラム"}} java/oop -.-> lab-300366{{"Quartz フレームワークを使った最初のプログラム"}} java/interface -.-> lab-300366{{"Quartz フレームワークを使った最初のプログラム"}} java/exceptions -.-> lab-300366{{"Quartz フレームワークを使った最初のプログラム"}} java/threads -.-> lab-300366{{"Quartz フレームワークを使った最初のプログラム"}} end

RemindJob クラスを実装する

このステップでは、Quartz フレームワークの Job インターフェイスを実装する RemindJob クラスをどのように実装するか学びます。

  1. /home/labex/project/QuartzRemind/src/main/java/org/labex ディレクトリにある RemindJob.java ファイルを開きます。

  2. org.quartz.Job インターフェイスの execute() メソッドを実装します。このメソッドは、ジョブが実行されるときに Quartz Scheduler によって呼び出されます。

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
    System.out.println("Wake up! Brush your teeth and wash your face!");
    System.out.println("Current system time - " + new Date());
}

execute() メソッドは、「目覚めろ!歯を磨り、顔を洗え!」というリマインダーメッセージと現在のシステム時刻を表示する必要があります。

✨ 解答を確認して練習

RemindScheduler クラスを実装する

このステップでは、RemindJob をスケジュールして実行する RemindScheduler クラスをどのように実装するか学びます。

  1. /home/labex/project/QuartzRemind/src/main/java/org/labex ディレクトリにある RemindScheduler.java ファイルを開きます。

  2. RemindJob 用の org.quartz.JobDetail インスタンスを作成して返す getJobDetail() メソッドを実装します。

public static JobDetail getJobDetail() {
    return JobBuilder.newJob(RemindJob.class)
         .withIdentity("reminderJob", "reminderGroup")
         .build();
}
  1. RemindJob 用の org.quartz.Trigger インスタンスを作成して返す getTrigger() メソッドを実装します。トリガーは 2 秒ごとにジョブを繰り返し、3 回実行します。
public static Trigger getTrigger() {
    return TriggerBuilder.newTrigger()
         .withIdentity("reminderTrigger", "reminderGroup")
         .startNow()
         .withSchedule(SimpleScheduleBuilder.simpleSchedule()
               .withIntervalInSeconds(2)
               .withRepeatCount(2))
         .build();
}
  1. org.quartz.Scheduler インスタンスを使って RemindJob をスケジュールして実行する doScheduler() メソッドを実装します。
public void doScheduler() throws SchedulerException, InterruptedException {
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

    // スケジューラを起動する
    scheduler.start();

    System.out.println("Scheduling started");

    // 定義された JobDetail と Trigger でジョブをスケジュールする
    scheduler.scheduleJob(getJobDetail(), getTrigger());

    // 10 秒間待つ
    Thread.sleep(10000);

    // スケジューラをシャットダウンする
    scheduler.shutdown();

    System.out.println("Scheduling completed");
}

このメソッドは、スケジューラを起動し、JobDetail と Trigger インスタンスでジョブをスケジュールし、10 秒間待ち、その後スケジューラをシャットダウンします。

✨ 解答を確認して練習

テスト関数を書く

このステップでは、RemindScheduler クラスのスケジューリング機能を検証するためのテスト関数をどのように書くか学びます。

  1. /home/labex/project/QuartzRemind/src/test/java/org/labex ディレクトリにある TestQuartz.java ファイルを開きます。

  2. RemindScheduler のインスタンスを作成し、その doScheduler() メソッドを呼び出す test() メソッドを実装します。

@Test
public void test() {
    try {
        new RemindScheduler().doScheduler();
    } catch (InterruptedException | SchedulerException e) {
        e.printStackTrace();
    }
}

このテストメソッドは、スケジューリング機能を実行し、ジョブが予想通りに実行されることを検証します。

✨ 解答を確認して練習

テストを実行する

テストを実行してプロジェクトを検証するには、次の手順に従います。

  1. ターミナルを開き、/home/labex/project/QuartzRemind ディレクトリに移動します。

  2. 次のコマンドを実行してテストを実行します。

mvn test

次の出力が表示されるはずです。

Scheduling started
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:03 CST 2024
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:05 CST 2024
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:07 CST 2024
Scheduling completed

この出力は、RemindScheduler クラスによって予定通りに RemindJob が 3 回実行されたことを示しています。

おめでとうございます!RemindJob と RemindScheduler クラスを実装し、スケジューリング機能を検証するためのテスト関数を書くことで、無事にプロジェクトを完了しました。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。あなたは実験(Lab)をもっとたくさん行って技術力を向上させることができます。