このチュートリアルでは、Apache Struts 1.xで簡単なWebアプリケーションプロジェクトを作成し、Quartzスケジューラフレームワークと統合する方法を説明します。プロジェクトの起動時に、Quartzエンジンを起動し、定義されたスケジューラタスクを起動します。

全体的な考え方は単純ですが、統合作業のために

Quartz Strutsプラグイン

を作成するだけで済みます。

Struts <--> Quartz Struts Plug-in <--> Quartz

使用されるツール:

  1. Apache Struts 1.3.10

  2. クォーツ2.1.5

  3. Eclipse IDE

  4. Maven

1.依存関係

Mavenを介してStrutsとQuartzの依存関係を取得します。


File:pom.xml

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>servlet-api</artifactId>
        <version>6.0.35</version>
    </dependency>

    <!-- Struts 1.3 framework -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts-core</artifactId>
        <version>1.3.10</version>
    </dependency>

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts-taglib</artifactId>
        <version>1.3.10</version>
    </dependency>

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts-extras</artifactId>
        <version>1.3.10</version>
    </dependency>

    <!-- Quartz framework -->
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.1.5</version>
    </dependency>

2.クォーツスケジューラの仕事

Quartzジョブを作成してメッセージを印刷します。

ファイル:Scheduler Job.java

package com.mkyong.common.quartz;

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

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

       System.out.println("Print Print Struts 1.3 + Quartz 2.1.5 integration example ~");

    }
}

3. Strutsプラグイン

シンプルなStrutsプラグインを作成し、Quartzフレームワークを統合します。このプラグインでは、Strutsの初期化中に `init()`メソッドが呼び出され、QuartzスケジューラのJobを5秒ごとに開始します。


File:QuartzPlugin.java

package com.mkyong.common.plugin;

import javax.servlet.ServletException;

import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

import com.mkyong.common.quartz.SchedulerJob;

public class QuartzPlugin implements PlugIn {

    @Override
    public void destroy() {
       //null
    }

    @Override
    public void init(ActionServlet servlet, ModuleConfig config)
            throws ServletException {

        JobDetail job = JobBuilder.newJob(SchedulerJob.class)
            .withIdentity("anyJobName", "group1").build();

        try {

            Trigger trigger = TriggerBuilder
                .newTrigger()
                .withIdentity("anyTriggerName", "group1")
                .withSchedule(
                    CronScheduleBuilder.cronSchedule("0/5 **  **  **  **  ?"))
                .build();

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

        } catch (SchedulerException e) {
            e.printStackTrace();
        }

    }

}

4.プラグインを宣言する

strutsの設定ファイル(struts-config.xml)に上記の

Strutsプラグイン

を含めます。


File:struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://jakarta.apache.org/struts/dtds/struts-config__1__3.dtd">

<struts-config>

    <action-mappings>

       <action path="/Welcome" type="org.apache.struts.actions.ForwardAction"
        parameter="/pages/quartz__started.jsp"/>

    </action-mappings>

    <plug-in className="com.mkyong.common.plugin.QuartzPlugin"/>

</struts-config>

5.デモ

Strutsの起動時に、Quartzスケジューラタスクを起動します。


strutsとquartz 2の例、title = "strust-quartz-example"、width = 632、height = 223

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

ダウンロードする –

Struts-Quartz-2-Example.zip

(24 KB)