- 我正在开发一个 Spring-MVC 应用程序,我希望在其中
喜欢授予用户在模态框内进行编辑的权限,仅适用于 5 个
分钟。我为此目的设置了一个 boolean 标志,所以如果
多人想要编辑此字段,然后他们可以阅读某人
正在编辑它,并且将自行承担编辑风险。
- 但我的问题是,如果第一个用户断电或获得 断开连接,我想再次在数据库中设置注释是 可编辑,通过将状态设为 false。所以,我想允许编辑标志 5 分钟,然后将其停用。我怎样才能实现这个目标?这是我的 代码
:
@Override
public void setActiveEdit(int noteId, boolean status) {
GroupNotes groupNotes = this.groupNotesDAO.getGroupNoteById(noteId);
// Start a 5 minutes counter here if status is true
groupNotes.setActiveEdit(status);
this.groupNotesDAO.editGroupNote(groupNotes,groupNotes.getOwnednotes().getMsectionid());
}
任何帮助都会很好。多谢。 :-)
最佳答案
第二个答案:
// in the controller where this stuff is needed
private Map<String, Date> editLocks = new HashMap<>();
private Object concurrencyLock = new Object();
// function for acquiring a lock
private boolean getLock(String id) {
synchronized(concurrencyLock) {
Date lastLock = editLocks.get(id);
if (lastLock == null || longAgoEnough(lastLock)) {
// add a new lock to the map with the time of now
editLocks.put(id, now());
return true; // a lock was available
}
}
// we get here because there's a valid lock
return false;
}
private void releaseLock(String id) {
synchronized(concurrencyLock) {
editLocks.remove(id);
}
}
您必须添加一些内容才能完成它,但它在单个服务器上运行得很好。
关于java - Spring MVC : Expire privilege flag after 5 minutes for edit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29346575/