Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 锁定记录并在用户从jsp页面执行操作后释放锁定_Java_Javascript - Fatal编程技术网

Java 锁定记录并在用户从jsp页面执行操作后释放锁定

Java 锁定记录并在用户从jsp页面执行操作后释放锁定,java,javascript,Java,Javascript,我有一个要求,在我的页面,我有一个记录列表表。 当用户单击一条记录时,该记录应被锁定,其他具有旧概览视图屏幕的用户尝试单击该记录,它会显示一个弹出窗口,并显示一条消息“抱歉,此记录正在进行” 我想在db表中添加一列,当有人单击并查看特定记录时,我将使条目显示为“in prodess”,稍后当他关闭该记录时,我将使用“Free”更新该列。但我这里有一个问题,如果有人选择录制并直接关闭浏览器,而没有正确关闭并释放锁,在这种情况下,没有人能够看到该记录 请让我知道,如果有任何其他方式来实现这一点,或者

我有一个要求,在我的页面,我有一个记录列表表。 当用户单击一条记录时,该记录应被锁定,其他具有旧概览视图屏幕的用户尝试单击该记录,它会显示一个弹出窗口,并显示一条消息“抱歉,此记录正在进行”

我想在db表中添加一列,当有人单击并查看特定记录时,我将使条目显示为“in prodess”,稍后当他关闭该记录时,我将使用“Free”更新该列。但我这里有一个问题,如果有人选择录制并直接关闭浏览器,而没有正确关闭并释放锁,在这种情况下,没有人能够看到该记录

请让我知道,如果有任何其他方式来实现这一点,或者我们如何能够在上述情况下实现这一点

条件1:两个用户同时登录记录均可用正常颜色,如绿色。用户1单击记录并开始编辑。在这种情况下,应该有某种锁,这样,如果用户2试图打开同一条记录,他将得到弹出消息“正在进行”


条件2:用户1登录并查看绿色记录。然后用户2登录并看到相同的灰色记录。现在,他应该无法点击该记录。

您遇到的问题正是为什么通常不会这样做。如果你真的有一个硬锁的记录,你最好的选择是有某种类型的超时。超时的时间长短取决于您的应用程序。让您的客户端定期刷新锁,您可以缩短超时时间

更好的解决方案可能是根本不锁定,而是在保存更改之前检查是否有人已经更改了数据。这通常使用要更新的记录中的时间戳或版本号来完成。要寻找的概念是乐观锁定


然而,这只有在可能的冲突相对不太可能的情况下才有效。呼叫中心工作人员更新客户记录是一个典型案例,因为两个呼叫中心地点几乎不会同时与同一客户通话。如果发生这种情况,其中一个会出错,必须重新加载数据并再次进行更改。

您可以在X小时后超时锁定。