0

我们正在使用带有 TopLink 和 Oracle 数据库的集群 Glassfish 2.x。JTA是持久化单元的指定事务类型,我们使用默认的缓存。

现在我们看到了一些我不太明白的行为:在 GF 节点 1 上执行了一个实体的更新,5 秒后,在节点 2 上执行了同一实体的另一个更新。但是当查看数据库时,它似乎更新的应用顺序错误。这甚至可能吗?根据我的理解,应该是在每个 WS 方法结束后,应该对数据库执行一次提交。所以应该不会有 5 秒的延迟,这两个操作会混淆。

更新在同一列上,并且仅在该列上,如果这很重要的话。因此,客户端在第二次调用期间是否确实看到了第一次更新的更改,这并不重要,因为他只是使用实体的主键和新列值来调用 WS 方法。在该方法中,获取实体,应用新列值并调用 entityManager.merge()。所以我不怀疑缓存在这里是一个问题。

两个 WS 方法调用/更新都没有引发异常。我无法检查数据库日志,因为它超出了我的控制范围。该行为偶尔发生一次。有没有人知道我们正在经历的行为可能是什么原因?当提交真正被执行时,它是否记录在某个地方?谢谢!

4

0 回答 0