Вопрос

В настоящее время в нашем веб-приложении наблюдается ряд исключений 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top