0

假设我有一个基于 java servlet 的 Web 应用程序,并且该应用程序读取文件系统上的文件。

现在这些文件在不断变化,所以有一个 VERSION 变量用于引用正确的子文件夹:

/app-files/version0001/....

如果修改了某些文件,则会创建一个新版本的子文件夹,并且 servlet 应该在此处查看:

/app-files/version0002/....

如何在我的 servlet 中创建此 VERSION 变量,使其全局可访问,并且当我需要修改它时,我可以以线程安全的方式?

该变量将被修改为我的 Internet 服务,该服务将发出 HTTP 请求,例如:

www.example.com/updateVersion?v=0003&secretKey=asdf23908234asdjf234
4

1 回答 1

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;
    }
}

*有可能使用原子组件、不同的同步方式等来做这样的我们。

我希望这有帮助。

于 2012-10-22T14:08:49.767 回答