Создайте сервлет, который запускается при инициализации веб-приложения.
<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();
Напишите интерфейс задания, дополняющий класс, из кварца.
EmailerJob implement Job{
public void execute(JobExecutionContext arg0) throws JobExecutionException {
//Code to send mails goes here
}
}
PS Приведенный выше код не проверен, но дает вам четкое представление о том, что делать.
Как правильно заметил @ jmort253, учебник по Quartz - это лучший ресурс, и, если я правильно помню, у него есть пример запланированного сообщения электронной почты, сделанный где-то в этом.1021 *
Хорошо, Google решит вашу проблему.И вот ваше самое подробное решение, которое каждый может дать вам! Java - Планирование заданий в веб-приложении с API кварца
Редактировать # 1 Вы можете использовать ContextListener
вместо сервлета для запуска планировщика Кварца.
Обновление 1
Как @jhouse справедливо упомянул, что вместо написания вашей собственной Job
, которая обрабатывает рассылку, вы можете задать предварительно определенный Quartz SendMailJob
класс, чтобы сделать то же самое.Спасибо @ jhouse.