Как запустить запланированный метод в кластере для одного узла и для всех?

У меня есть Glassfish 3.1.2, работающий в кластере, и приложение EJB 3.1. И мне нужно два вида запланированных методов в моем приложении:

one kind that runs only once (on a single node) once a day and other kind that runs on all nodes (every 1-2 Minutes) -- They do NOT need to run a syncron way! The requirement is just that this kind run on every node.

Я понятия не имею, как начать с этого кластера - проблема, это возможно с@Schedule (и как) или мне нужно что-то еще?

 Ralph13 июл. 2012 г., 13:03
В этом ответе есть ответ на этот вопрос:stackoverflow.com/a/11465568/280244

Ответы на вопрос(2)

Решение Вопроса

cluster таймер иper node таймер) и наткнулся на этот вопрос. Итак, для всех, кто заинтересован:

Если вы объявите таймер с помощью @Schedule (..., persistent = true), вы получитеcluster таймер хранится в таймере дБ (который можно перенести)

Если вы объявите таймер с помощью @Schedule (..., persistent = false), вы получитеnode таймер не хранится в db таймера (который не может быть перенесен)

 06 окт. 2012 г., 14:51
Вы также можете прочитатьthis
 19 мая 2017 г., 12:04
Я также сталкиваюсь с той же проблемой в weblogic. Я создал TimerTask. Я просто хочу запускать эту таймерную задачу только на одном узле за раз. ты можешь мне помочь?
 Ralph06 окт. 2012 г., 09:30
Это просто наблюдение или какой-то документальный фильм?
 14 апр. 2015 г., 10:02
Подтверждено ли, что это поведение также реализовано на JBoss / Wildfly в доменном режиме?
 06 окт. 2012 г., 14:30
@Ralph Это поведение проверено в моем приложении (работает на кластере Glassfish 3). Я не могу найти точную документацию, но могу объяснить поведение: если таймер является постоянным в базе данных таймера (в моем случае база данных MySQL, вы не можете использовать встроенную базу данных в кластере), он используется для всех узлов через базу данных. Для непостоянного таймера каждый узел не может знать, что таймер существует на других узлах, поэтому новый таймер создается на каждом узле.

который должен запускаться на одном узле, используйте очередь, а для методов, которые необходимо запустить на всех узлах, - тему.

Ваш ответ на вопрос