锁定多用户的应用程序

时间:2013-10-29 20:43:19

标签: java jsp struts2

我开发了一个使用java和Struts2在服务器上部署的应用程序。它对文件进行了更改,所以我想一次限制对一个用户的访问,以避免数据不一致。我该怎么做?请帮助

3 个答案:

答案 0 :(得分:0)

如何编写一个提供读/写这些文件的方法的类。此类公开了同步读/写功能。

e.g

public class FileManager {
  HashMap<String, File> _fileHandleMap;

  public synchronized void doWrite(String fileHandle, String bufferToWrite) {
     .....
  }

  public synchronized String doRead(String fileHandle) {
  }

}

想法是将文件读/写操作封装在一个类中,并同步该类的读/写操作的访问。

答案 1 :(得分:0)

您可以使用文件系统为正在编辑的文件创建“锁定”文件。如果有人在您的应用程序中打开该文件 - 锁定文件就在它旁边。用户完成编辑该文件后,锁定文件将消失,另一个用户可以打开该文件。

答案 2 :(得分:0)

在同一个应用程序中,但对于多个线程,我们可以synchronize访问。但是对于同一文件上的多个应用程序(例如java中相同应用程序的多个实例),我们可以这样做:

 RandomAccessFile raf = new RandomAccessFile( "scatterAndGather.txt", "rw" );
 FileChannel fc = raf.getChannel();
 fileLock=fc.lock(0, fc.size(), false);

这将在整个应用程序中进行,并由操作系统管理。