Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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 从两个或多个servlet同步访问一个文件_Java_Servlets_Synchronization - Fatal编程技术网

Java 从两个或多个servlet同步访问一个文件

Java 从两个或多个servlet同步访问一个文件,java,servlets,synchronization,Java,Servlets,Synchronization,我正在编写一个基于Tomcat和Java servlet的Web应用程序。 在我的例子中,有一些(不同的)Servlet必须访问同一个文件,我需要一种机制来同步这些访问 我尝试使用一个新的Servlet(使用空的doGet()和doPost()方法),我称之为“控制器”,以便将它用作我需要的每个对象(锁、条件变量等)的“容器”。不幸的是,这种方法基于使用ServletContext中的方法getServlet(name),该方法已被弃用,在我的例子中不起作用 这类问题有什么已知的解决方案吗?这类

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

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


这类问题有什么已知的解决方案吗?

这类问题通常通过引入额外的抽象层来解决。
将对文件的访问封装在对象中,并使用此新对象协调对文件的访问。
servlet都将使用这个中间对象来访问文件,这个对象将处理任何并发/多线程问题。不需要您所说的新servlet。

您可以使用存储对象

您可以使用以下方法使用文件锁定:


非常感谢您的回答。我可以使用getServletContext()获得的ServletContext对象是否与我的Web应用程序的每个Servlet相同?@VitoShadow:是的,相同。每个Java Virtual Machine.Perfect的每个“Web应用程序”都有一个上下文。非常感谢;)因此,在本例中,您将引入一个类,该类将包含用于读取和写入XML文件的同步方法。对吗?