Хотя это старый вопрос, он все еще актуален.
Я думаю, что вы, вероятно, имеете в виду параллелизм между службами таймера, работающими в многосерверной среде, поскольку безопасность потоков обычно относится к процессам, выполняющимся в той же JVM и решаемым с помощью синхронизированных методов.
В многосерверной среде, если вы не хотите, чтобы одни и те же таймеры EJB запускались одновременно в одно и то же запланированное время, можно сохранить их в общем ресурсе (например, в базе данных) и упорядоченно запускать их на некоторых серверов без помех для других.
Основной подход, по-видимому, заключается в определении постоянных таймеров EJB и источника данных с изоляцией сериализуемой транзакции , поэтому только один сервер одновременно сможет обновлять таблицу управления расписанием таймеров. Исходя из этого, я вижу два возможных подхода:
- Служба таймера включила серверы JBoss, настроенные для работы в кластере, поэтому таймеры EJB будут запускаться только на одном узле за раз (т. Е. Однократное выполнение таймера). [1]
- В некластеризованной среде, возможно, вы могли бы выбрать сервер, на котором было разрешено выполнение таймера EJB, и отключить это выполнение на других серверах.
Это, конечно, не полный список всех возможностей, но я думаю, что это может быть отправной точкой для настройки таймеров EJB в многосерверной среде.
ссылка:
[1]: JBoss - Мастерство босса - Создание кластерных таймеров EJB 3
- http://www.mastertheboss.com/jboss-server/wildfly-8/creating-clustered-ejb-3-timers
[2]: JBoss - Mastering the Boss - Настройка хранилища пакетных заданий WildFly
- http://www.mastertheboss.com/jboss-server/wildfly-8/configuring-wildfly-batch-job-repository
[3]: StackOverFlow - Как отключить службу таймера в Wildfly 10?