假设我有一个基于java servlet的Web应用程序,该应用程序读取文件系统上的文件。
现在这些文件不断变化,因此有一个VERSION变量用于引用正确的子文件夹:
/app-files/version0001/....
如果修改了某些文件,则会创建一个新版本的子文件夹,并且servlet应该在这里查找:
/app-files/version0002/....
如何在我的servlet中创建这个VERSION变量,使其可全局访问,当我需要修改它时,我可以以线程安全的方式?
该变量将被修改为我的互联网服务,该服务将发出如下的HTTP请求:
www.example.com/updateVersion?v=0003&secretKey=asdf23908234asdjf234
答案 0 :(得分:0)
要解决这个问题,你可以通过多种方式解决这个问题。
1从selvlet创建一个应用程序变量。
ServletContext context = request.getSession().getServletContext();
context.setAttribute("myversionvariable", "version");//to set it
Object attribute = context.getAttribute("someValue");//to get it
2创建一个静态字符串数组来放置您的版本号,并为此变量创建并声明一个get和set方法。只要访问权限是公开的,您就可以在应用中的任何位置更改此变量。防爆。来自JSP
<%@ page import="com.servlets.MyServlet" %>
<% MyServlet.getMyServletVarible(); %>
如果您需要使其线程安全,您只能通过一个同步方法Ex。
访问和更改此变量private static String myvarVersion;
private static final int SET = 1;
public static synchronized String Operation (String value, int operation){
if(operation == SET){
myvarVersion = value;
return "";
} else{
return myvarVersion;
}
}
*有可能使用Atomic组件,不同的同步方式等方式来做这些事情。
我希望这会有所帮助。