1

私はTomcatとJavaサーブレットに基づいたWebアプリケーションを書いています。私の場合、同じファイルにアクセスする必要のある(異なる)サーブレットがいくつかあり、これらのアクセスを同期するメカニズムが必要です。

必要な各オブジェクト(ロック、条件変数など)の「コンテナー」として使用するために、「コントローラー」と呼ばれる新しいサーブレット(空のメソッドdoGet()とメソッドを使用)を試してみました。残念ながら、このアプローチは、非推奨のメソッドfromdoPost()を使用することに基づいており、私の場合は機能しません。getServlet(name)ServletContext

この種の問題に対する既知の解決策はありますか?

4

2 に答える 2

3

この種の問題は通常、追加の抽象化レイヤーを導入することで解決されます。
ファイルへのアクセスをオブジェクト内にカプセル化し、この新しいオブジェクトを使用してファイルへのアクセスを調整します。
サーブレットはすべて、この中間オブジェクトを使用してファイルにアクセスし、このオブジェクトが並行性/マルチスレッドの問題を処理します。あなたが言う新しいサーブレットは必要ありません。サーブレットコンテキスト
を 使用してオブジェクトを保存できます

于 2012-08-30T17:43:32.877 に答える
0

以下を使用してファイルのロックを使用できますFileChannel.lock

Java を使用してファイルをロックするにはどうすればよいですか (可能な場合)

于 2012-08-30T17:46:45.410 に答える