0

Java サーブレット ベースの Web アプリケーションがあり、このアプリケーションがファイル システム上のファイルを読み取るとします。

現在、これらのファイルは常に変更されているため、正しいサブフォルダーを参照するために使用される VERSION 変数があります。

/app-files/version0001/....

一部のファイルが変更されると、新しいバージョンのサブフォルダーが作成され、サーブレットはここを参照する必要があります。

/app-files/version0002/....

サーブレットでこの VERSION 変数を作成し、グローバルにアクセスできるようにするにはどうすればよいですか?変更する必要がある場合は、スレッドセーフな方法で変更できますか?

変数は、次のような HTTP 要求を行うインターネット サービスによって変更されます。

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

1 に答える 1

0

これを解決するには、いくつかの方法があります。

1 セルブレットからアプリケーション変数を作成します。

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(); %>

スレッドセーフにする必要がある場合は、1 つの同期メソッド 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 コンポーネントを使用したり、さまざまな同期方法を使用したりするなど、さまざまな方法があります。

これが役立つことを願っています。

于 2012-10-22T14:08:49.767 に答える