同步对两个或多个Servlet中的一个文件的访问

时间:2012-08-30 17:40:30

标签: java servlets synchronization

我正在编写一个基于Tomcat和Java Servlets的Web应用程序。 在我的例子中,有一些(不同的)Servlet必须访问同一个文件,我需要一种机制来同步这些访问。

我尝试了一个新的Servlet(使用空doGet()doPost()方法),我称之为'Controller',以便将它用作我需要的每个对象的“容器”(锁,条件变量,...)。不幸的是,这种方法基于使用getServlet(name)中的ServletContext方法,该方法已被弃用,在我的情况下不起作用。

这种问题是否有任何已知的解决方案?

2 个答案:

答案 0 :(得分:3)

这些问题通常通过引入额外的抽象层来解决 封装对象内部文件的访问权限,并使用此新对象协调对文件的访问 servlet都将使用此中间对象来访问该文件,此对象将处理任何并发/多线程问题。不需要你说的新servlet 您可以使用Servlet Context存储对象

答案 1 :(得分:0)

您可以使用FileChannel.lock

来使用文件锁定

How can I lock a file using java (if possible)