Уведомления и напоминания по электронной почте в веб-приложении Java с использованием Quartz Scheduler

Я хочу разработать простое веб-приложение Java для отправки уведомлений по электронной почте после выполнения какой-либо задачи, например запроса, отправленного на утверждение, и напоминаний (скажем, утверждающих) через регулярные промежутки времени. Я хочу сделать это с помощью Quartz Scheduler. Я новичок, так что может ли кто-нибудь помочь мне начать с этого.

Заранее спасибо.

Я копирую и вставляю файл JAR: кварц-1.8.0 в WEB-INF\lib и даже в common\lib, после чего он не обнаруживается при импорте в моем файле Java. :(


person shiny    schedule 05.02.2011    source источник
comment
Я копирую и вставляю банку :quartz-1.8.0 в WEB-INF\lib, затем она не найдена при импорте в моем java-файле :(   -  person shiny    schedule 07.02.2011
comment
Вы уверены, что использовали правильный оператор импорта? Проверьте файл JAR, чтобы убедиться, что структура пакета в файле JAR соответствует вашему оператору импорта. Кроме того, убедитесь, что ваш путь к классам установлен правильно. Измените уровень журнала на DEBUG или ALL, чтобы у вас была вся необходимая информация для решения проблемы.   -  person jmort253    schedule 08.02.2011


Ответы (1)


Создайте сервлет, который запускается при инициализации веб-приложения.

<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
comment
Кроме того, Quartz поставляется с классом заданий org.quartz.jobs.ee.mail.SendMailJob, который знает, как отправлять электронную почту, который будет работать для многих приложений или служить примером кода. - person jhouse; 05.02.2011
comment
@jhouse спасибо за информацию. Я обновил это в ответе. - person Nishant; 05.02.2011
comment
Я копирую и вставляю банку :quartz-1.8.0 в WEB-INF\lib, затем она не найдена при импорте в моем java-файле :( - person shiny; 07.02.2011
comment
@user604155 user604155 Jar должен быть в пути к классам. WEB-INF/lib - это путь к классу, когда ваш сервер работает. Вы получаете ClassNotFound во время компиляции или во время выполнения? - person Nishant; 07.02.2011