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