Проблемы в пользовательском экземпляре планировщика для службы таймера EJB в кластерной среде - PullRequest
0 голосов
/ 06 декабря 2018

Наше приложение развернуто на сервере приложений Websphere.Приложение работает в кластерной среде с 6 узлами.Служба таймера EJB настраивается с помощью настраиваемого планировщика с источником данных, указывающим на базу данных Oracle. Поэтому, когда приложение развертывается в кластере, оно запускает службу таймера EJB на узле 1, который указан в базе данных Oracle.

Иногда значение вБаза данных oracle автоматически изменяется на некоторые другие узлы, такие как node2 или node3, из-за которых таймер EJB останавливается. Любые Предложения или советы по поводу того, почему он изменяется автоматически.

Настройка таймера EJB

Server(0).components.ApplicationServer(1).components.EJBContainer(1).timerSettings.EJBTimer(0).datasourceJNDIName = jdbc/cdb_db

Сервер (0) .components.ApplicationServer (1) .components.EJBContainer (1) .timerSettings.EJBTimer (0) .nonPersistentTimerRetryCount = -1 Сервер (0) .components.ApplicationServer (1).components.EJBContainer (1) .timerSettings.EJBTimer (0) .nonPersistentTimerRetryInterval = 300 Server (0) .components.ApplicationServer (1) .components.EJBContainer (1) .timerSettings.EJBTimer (0) (0).) .components.ApplicationServer (1) .components.EJBContainer (1) .timerSettings.EJBTimer (0) & nu;mNPTimerThreads = 1 Сервер (0) .components.ApplicationServer (1) .components.EJBContainer (1) .timerSettings.EJBTimer (0) .pollInterval = 300 Сервер (0) .components.ApplicationServer (1) .components.EJBContain.timerSettings.EJBTimer (0) .tablePrefix = EJBTIMER_ Server (0) .components.ApplicationServer (1) .components.EJBContainer (1) .timerSettings.EJBTimer (0) .uniqueTimerManagerForNP = false

1 Ответ

0 голосов
/ 10 декабря 2018

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

Если вам не нравится это поведение и вы хотите изменить его так, чтобы задачи таймера могли выполняться только на одном члене, это можно сделать, остановив демон опроса планировщика на всехчлены, за исключением того, который вы хотите запустить задачи.Вот документ центра знаний, в котором описывается, как это сделать: https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/scheduler/xmp/xsch_stopstart.html

Просто имейте в виду, что если вы сделаете это, вы потеряете возможность планировщика автоматически запускать задачи на другомчлен должен, если член, которого вы назначили управлять им, отказывается.В этом случае задачи не будут выполняться вообще до тех пор, пока 1) участник, которому разрешено их запускать, не восстановится, или 2) вы вручную не используете вышеупомянутый WASScheduler MBean, чтобы запустить демон опроса планировщика на другом члене, что позволяетзадачи для запуска там

...