2009-10-26 4 views
1

В настоящее время мы испытываем несколько InvalidItemStateException в нашем веб-приложении, вызванное двумя или более пользователями, обновляющими один и тот же контент. Насколько я понял, именно в дизайне JackRabbit выкидывает в такой ситуации, и это нормально, но я хотел спросить об общем способе справиться с этим. Мы довольно хорошо, что последнее обработанное изменение выигрывает обновление. До сих пор у нас появился следующий код:Handle InvalidItemStateException в jackrabbit

repeat = false; 
do { 
    try { 

    // Do node update/remove 

    } catch (InvalidItemStateException e) { 
    repeat = true; 
    } 
} while (repeat); 

Это общий шаблон, как с этим справиться? Или это лучший способ избежать подобных ситуаций?

ответ

1

JCR (и Jackrabbit) имеет механизм блокировки узлов, который может быть лучше подходит для этого ... извините, хотя я еще не использовал его, чтобы быть уверенным, что он решит вашу проблему.

Удачи.

0

Во избежание InvalidItemStateException каждый поток/пользователь должен иметь свой собственный объект Session.

+0

-1 читать java-документ для исключения «... выполненный через другую сессию» – TedTrippin