web-app init で開始するサーブレットを作成します。
<web-app>
...
<servlet>
<servlet-name>Emailer</servlet-name>
<servlet-class>my.servlet.Emailer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
...
</web-app>
init()
サーブレットでスケジューラーを構成します (以下の例では 10 分ごとにトリガーされます)
SchedulerFactory schFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schFact.getScheduler();
JobDetail job = new JobDetail("job1", "group1", EmailerJob.class);
CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1", "group1", "* 0/10 * * * ?");
sched.addJob(job, true);
sched.start();
Quartz の Job インターフェースを実装する Class を記述します。
EmailerJob implement Job{
public void execute(JobExecutionContext arg0) throws JobExecutionException {
//Code to send mails goes here
}
}
PS上記のコードはテストされていませんが、何をすべきかについてはかなりのアイデアが得られます。
@jmort253 が正しく指摘したように、Quartz チュートリアルは最高のリソースであり、私の記憶が正しければ、スケジュールされたメーラーの例がそのどこかで実行されています。
アップデート
わかりました、Google が問題を解決します。そして、これが誰でもあなたに与えることができる最も詳細な解決策です! Java – Quartz API を使用した Web アプリケーションでのジョブスケジューリング
Edit#1サーブレットの代わりに使用ContextListener
して、Quartz スケジューラを開始できます。
更新 1
@jhouseが正しく述べたように、Job
メーリングを処理する独自のものを書く代わりに、Quartzの定義済みSendMailJob
クラスに同じことをさせることができます。ありがとう@jhouse。