我们现在在Web应用程序中遇到一些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