Java 从两个或多个servlet同步访问一个文件
我正在编写一个基于Tomcat和Java servlet的Web应用程序。 在我的例子中,有一些(不同的)Servlet必须访问同一个文件,我需要一种机制来同步这些访问 我尝试使用一个新的Servlet(使用空的Java 从两个或多个servlet同步访问一个文件,java,servlets,synchronization,Java,Servlets,Synchronization,我正在编写一个基于Tomcat和Java servlet的Web应用程序。 在我的例子中,有一些(不同的)Servlet必须访问同一个文件,我需要一种机制来同步这些访问 我尝试使用一个新的Servlet(使用空的doGet()和doPost()方法),我称之为“控制器”,以便将它用作我需要的每个对象(锁、条件变量等)的“容器”。不幸的是,这种方法基于使用ServletContext中的方法getServlet(name),该方法已被弃用,在我的例子中不起作用 这类问题有什么已知的解决方案吗?这类
doGet()
和doPost()
方法),我称之为“控制器”,以便将它用作我需要的每个对象(锁、条件变量等)的“容器”。不幸的是,这种方法基于使用ServletContext
中的方法getServlet(name)
,该方法已被弃用,在我的例子中不起作用
这类问题有什么已知的解决方案吗?这类问题通常通过引入额外的抽象层来解决。
将对文件的访问封装在对象中,并使用此新对象协调对文件的访问。
servlet都将使用这个中间对象来访问文件,这个对象将处理任何并发/多线程问题。不需要您所说的新servlet。
您可以使用存储对象您可以使用以下方法使用文件锁定:
非常感谢您的回答。我可以使用getServletContext()获得的ServletContext对象是否与我的Web应用程序的每个Servlet相同?@VitoShadow:是的,相同。每个Java Virtual Machine.Perfect的每个“Web应用程序”都有一个上下文。非常感谢;)因此,在本例中,您将引入一个类,该类将包含用于读取和写入XML文件的同步方法。对吗?