在客户端之间锁定实体的最佳方法

时间:2013-11-11 13:37:35

标签: database java-ee file-io locking

我们正在Java EE中重写一个旧的Cobol应用程序。 旧的Cobol是一个完整的客户端应用程序。

客户端的要求是锁定实体(例如特定帐户),以便没有人可以访问它或至少只能以只读方式访问它。这是因为某些事务可能很长,我们不希望用户输入大量数据只是为了在更新时丢失所有内容。 不需要乐观锁定。

目前,通过在文件系统中创建具有诸如并发访问,无事务等许多问题的锁来实现该要求。不是Java EE兼容。 锁也应告诉客户端锁定实体。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我建议使用数据库本身来锁定而不是文件系统方法。

在应用程序中,我们通过使用具有ENTITY_TYPE,ENTITY_ID,USER_ID和VALID_TO字段的特殊表LOCK实现了锁定每个实体的基础。在用户没有做任何事情的某个时间之后创建的锁定超时。这是为了防止当客户端关闭应用程序或由于网络错误等而无法由其他用户编辑的锁定实体。

在允许用户编辑实体之前,我们在此表中检查/创建了一行。在用户界面上,用户有一个锁定实体的按钮或一个信息框,显示用户在锁定实体时持有锁。