У меня есть приложение, которое сравнивает сложный набор правил с транзакцией. Поскольку правила не меняются очень часто, и есть много транзакций, я создал правила из базы данных как singelton (RuleInfo). Когда правило изменено, я вызываю updateRuleInfo.Singleton на кластерных серверах
public static void updateRuleInfo(){
instance = new RuleInfo();
Это прекрасно работало в моих Дев и тестирования, потому что они оба на отдельных серверах, однако, наша производственная среда является WebSphere кластерной среде (2 сервера с 2 узлами каждый). В результате, если правила для человека или инструмента обновляются, изменение отображается на одном узле, но пользователь может попытаться совершить транзакцию на другом узле и получить старый набор правил. Я пробовал вызывать updateRuleInfo каждый раз, когда кто-то регистрируется в приложении, но это тоже не работает.
Есть ли способ обновить синглтон на всех узлах?
Когда система запускает/перезагружается, откуда вы получаете исходное правило? Сохраняется ли она в базе данных? – isnot2bad
Когда система запускается, она получает правила из базы данных. Перезапуск системы правильно заполняет все правила во всех узлах. Конечно, это не решение. – itsNotABlanket