Gestire InvalidItemStateException in jackrabbit
-
06-07-2019 - |
Domanda
Ora stiamo riscontrando un numero di InvalidItemStateException nella nostra applicazione Web causato da 2 o più utenti che aggiornano lo stesso contenuto. Per quanto ho capito, è nella progettazione di JackRabbit lanciare javax.jcr.InvalidItemStateException
in tale situazione e va bene, ma volevo chiedere il modo comune di gestirlo. Siamo abbastanza d'accordo sul fatto che l'ultima modifica elaborata vince l'aggiornamento. Finora abbiamo trovato il seguente codice:
repeat = false;
do {
try {
// Do node update/remove
} catch (InvalidItemStateException e) {
repeat = true;
}
} while (repeat);
È uno schema comune come gestirlo? O è un modo migliore per evitare tali situazioni?
Soluzione
JCR (e Jackrabbit) ha un meccanismo di blocco dei nodi che potrebbe essere più adatto a questo ... scusa, anche se non l'ho ancora usato per essere sicuro che risolverà il tuo problema.
Buona fortuna.
Altri suggerimenti
Per evitare InvalidItemStateException ogni thread / utente dovrebbe avere il proprio oggetto Session.