отправить письмо "из базы данных" - PullRequest
0 голосов
/ 18 декабря 2010

Я думаю о возможных путях, как инициировать отправку почты на основе значений, в том числе значений времени, хранящихся в базе данных.Один из способов, который я могу придумать, - это использовать аннотацию EJB @Timeout, но я не знаю, как EJB хранит эти таймеры до их выполнения.Разве это не занимает слишком много памяти?Другим способом может быть создание потока, который будет периодически проверять базу данных, и, если значения в db соответствуют, электронное письмо будет отправлено.Следующим способом может быть выполнение кода Java из базы данных с помощью триггеров.Каковы преимущества и недостатки этого подхода?Есть ли другой (лучший) подход?

1 Ответ

0 голосов
/ 18 декабря 2010

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

Как я уже говорил, когда вы уже используете EJB, я думаю, что таймер EJBСервис - самое простое решение вашей проблемы.Если вы используете JEE5, проверьте Руководство по обслуживанию таймера JEE5 , а когда вы используете JEE6, посмотрите Руководство по обслуживанию таймера JEE6 .J2EE версии 1.4 также имеет службу таймера, но в этом случае я бы выбрал службу планирования Quartz, так как тогда этот подход, вероятно, будет проще.Если вы не используете какой-либо EJB-компонент, вы всегда можете использовать Кварцевый сервис планирования .

С помощью сервиса EJB Timer и Кварцевого планирования вы можете легко определить метод и / иликласс, который вызывается в соответствии с определенным вами расписанием, например, каждый час, каждую минуту или даже каждые 5 секунд каждого первого понедельника месяца.Таким образом, вы можете позволить службе планирования вызывать написанный вами метод, который проверяет базу данных и затем при необходимости отправляет электронные письма.Оба решения очень просты в использовании и требуют очень мало ресурсов, поэтому вам не нужно бояться, что они потребляют слишком много памяти.

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...