Question

Nous rencontrons actuellement plusieurs exceptions InvalidItemStateException dans notre application Web, provoquées par deux utilisateurs ou plus mettant à jour le même contenu. Autant que je sache, JackRabbit a été conçu pour lancer javax.jcr.InvalidItemStateException dans une telle situation et ce n'est pas grave, mais je voulais poser des questions sur la manière habituelle de gérer cela. Nous sommes assez d'accord pour dire que la dernière modification traitée remporte la mise à jour. Jusqu'à présent, nous avons mis au point le code suivant:

repeat = false;
do {
  try {

     // Do node update/remove

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

S'agit-il d'un modèle courant pour gérer cela? Ou est-ce un meilleur moyen d'éviter de telles situations?

Était-ce utile?

La solution

JCR (et Jackrabbit) a un mécanisme de verrouillage de nœud qui conviendrait peut-être mieux à cela ... désolé, bien que je ne l’aie pas encore utilisé pour être sûr que cela résoudrait votre problème.

Bonne chance.

Autres conseils

Pour éviter InvalidItemStateException, chaque thread / utilisateur doit avoir son propre objet Session.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top