Обрабатывать InvalidItemStateException в крольчатнике
-
06-07-2019 - |
Вопрос
В настоящее время в нашем веб-приложении наблюдается ряд исключений InvalidItemStateException, вызванных тем, что 2 или более пользователей обновляют один и тот же контент. Насколько я понял, в дизайне JackRabbit в такой ситуации создается javax.jcr.InvalidItemStateException
, и это нормально, но я хотел спросить об общем способе обработки этого. Мы в порядке, что последнее обработанное изменение выигрывает обновление. Итак, мы придумали следующий код:
repeat = false;
do {
try {
// Do node update/remove
} catch (InvalidItemStateException e) {
repeat = true;
}
} while (repeat);
Это обычная схема, как справиться с этим? Или это лучший способ избежать таких ситуаций?
Решение
JCR (и Jackrabbit) имеют механизм блокировки узлов, который может лучше подойти для этого ... извините, хотя я еще не использовал его, чтобы быть уверенным, что это решит вашу проблему.
Удачи.
Другие советы
Чтобы избежать InvalidItemStateException, каждый поток / пользователь должен иметь свой собственный объект Session.