多くの情報源から、リスナーをインスタンス化してスケジューラーにすべてプロパティファイルで登録できることが可能であり、意図されていると人々が言っていることを読みました。
しかし、私はどこでも検索しましたが、この例は 1 つも見つかりません。
注: このQuartz Initiazlizer Servletを使用して、スケジューラを開始しています。そのため、従来の JobListener をスケジューラーに登録する方法は使えません。これを行う他の方法は非常に受け入れられています
基本的に私はこれをしたい:
JobListener jobListener = new SchedulerGlobalListener();
scheduler.getListenerManager().addJobListener(jobListener);
この中(quartz.propertiesの下)
org.quartz.jobListener.NAME.class = com.foo.MyListenerClass
org.quartz.jobListener.NAME.propName = propValue
org.quartz.jobListener.NAME.prop2Name = prop2Value
* * 以下は私が試したことと結果です
#quartz.properties#
org.quartz.jobListener.SchedulerGlobalListener.class = com.scheduler.SchedulerGlobalListener
#リスナークラス#
public class SchedulerGlobalListener implements JobListener {
private String name;
public SchedulerGlobalListener() {
}
public SchedulerGlobalListener(String name) {
if(name.isEmpty())
{
this.name = "SchedulerGlobalListener";
}
else
{
this.name = name;
}
}
@Override
public String getName() {
return name;
}
public String setName(String name) {
return name;
}
@Override
public void jobToBeExecuted(JobExecutionContext context) {
// do something with the event
}
@Override
public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {
System.out.println("I just ran this job: " + context.getJobDetail().getJobClass().getName());
}
@Override
public void jobExecutionVetoed(JobExecutionContext context) {
// do something with the event
}
}
結果:
INFO: QuartzInitializer: Quartz Scheduler failed to initialize: java.lang.IllegalArgumentException: JobListener name cannot be empty.