2013-11-29 2 views
0

Не могли бы вы помочь мне с напоминанием о календаре на Java, который будет независим от сервера. Я имею в виду, что после перезапуска сервера действие напоминания, например, отправляет электронное письмо, должно быть выполнено. Я уже посмотрел this. Но там сказали использовать Таймер. Как я знаю, это зависит от статуса сервера. Я также попытался создать ejb с аннотацией @Startup, но проблема в том, что интерфейс TimedObject не имеет никаких других полей для хранения данных, которые я хочу представить, только метод EJBTimeout (Timer t). Также, используя EJB, он создает только одно напоминание для каждого пользователя, но не для каждой встречи.Java. JBoss. Календарь. Создание напоминания

Если я ошибаюсь, не могли бы вы исправить меня.

ответ

0

Если вы хотите полагаться исключительно на объект EJB, вы хотите использовать таймеры EJB. Таймеры EJB сохраняются на перезапуске сервера и могут создаваться динамически. Они полагаются на Session Bean, чтобы взять на себя роль обработки тайм-аута (в этом случае отправка электронной почты).

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

Темная сторона таймеров EJB заключается в том, что постоянные таймеры ПОТЕРЯТЬ, когда приложение перераспределено. Таким образом, если вы измените какую-то логику или что-то несвязанное, требующее повторного развертывания приложения, таймеры будут сброшены (поскольку они привязаны к приложению).

Этот аспект может сделать их разочаровывающими в использовании, так как вам понадобится ваша собственная инфраструктура для перезапуска таймеров, которые теряются при перераспределении сервера. Это не сложно, в основном вы храните тень таймера EJB в своей собственной базе данных, и когда ваша система развертывает событие запуска, эта таблица синхронизируется с существующими таймерами, о которых знает контейнер. Затем у вас есть метод тайм-аута EJB, который удаляет таймер из БД при выполнении задачи.

Это не сложно, но это раздражает, а захват данных таймера - это 85% всего процесса «сделать что-то позже» в первую очередь. Но что есть, то есть.

Вы также можете посмотреть Quartz, популярную структуру планирования, которая будет запущена в уровне Servlet.

+0

Thanx много! Это было полезно. – user3050792

 Смежные вопросы

  • Нет связанных вопросов^_^