My question is that, when I execute a job from a controller with the following method:
def startScheduler(){
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
///////////////////////////////
JobDetail job = JobBuilder.newJob(SchedulerJobService.class)
.withIdentity("SendMailJob","DB")
.build();
///////////////////////////////
Trigger trigger = TriggerBuilder
.newTrigger()
.withIdentity("crontrigger","DB")
.withSchedule(CronScheduleBuilder.cronSchedule(cronSce))
.build();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
Calling:
class SchedulerJobService implements Job {
private static final log = LogFactory.getLog(SchedulerJobService.class)
boolean transactional = true
public void execute (JobExecutionContext jobExecutionContext) {
new SendMailController().sendMail()
}
}
In the method sendMail()
for
loop is executed, sending a lot of mails, and when I execute stopScheduler()
:
public def stopScheduler(){
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
TriggerKey triggerKey = TriggerKey.triggerKey("crontrigger","DB");
scheduler.unscheduleJob(triggerKey);
}
The job stops, but the for
in new SendMailController().sendMail()
continue his work, until it is finally finished. How to stop it when I execute stopSceduler()
?