WebSphere создает один компонент для двух узлов сервера - PullRequest
0 голосов
/ 10 мая 2018

У меня есть приложение, которое развернуто на нескольких узлах в WebSphere 8.5.5.2. Приложение содержит некоторую бизнес-логику, которая должна выполняться ровно один раз (если она была выполнена на одном узле, она не должна выполняться на других узлах).

Как мне этого добиться?Единственное решение, которое я изобрел, - это создать отдельное ухо с этой конкретной логикой и создать для него отдельный узел.Есть ли другой путь?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Кварц-планировщик сделал свое дело. У этого есть хороший дизайн замка таблицы DB.

0 голосов
/ 14 мая 2018

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

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

Полезна следующая информация о настройке сервера EJB Timer для кластера: https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/rejb_timerservice_v8.html

...