かなり一般的な質問ですが、アドバイスをお願いします。
私はサーブレットを持っています。
このサーブレットにはプライベート フィールドがあります。
プライベート フィールドは一種のメタデータです (public class Metadata{//bla-bla-bla})。
GETリクエストが処理されると、このメタデータを使用して何らかの操作が実行されます。
同じサーブレットに POST メソッドを実装したい。ユーザーがファイルをアップロードすると、メタデータ フィールドが更新されます。
問題: 1 つのサーブレット インスタンスを使用して、複数の Web スレッド間で共有される Metadata オブジェクトを使用して、このプライベート フィールドに同時にアクセスします。POST メソッド操作 (メタデータ オブジェクトの更新) により、メタデータの不整合状態が発生し、同時 GET 要求が失敗する可能性があります。
質問: GET リクエストの実行中に Metadata オブジェクトを更新する最良の方法は何ですか?
ダミーソリューション:
各 GET リクエストの間、最初に
メタデータ オブジェクトを同期し、1 つのブロックに複製してから解放します。
同時 GET リクエストは、一貫性のある Metadata オブジェクトのクローン バージョンで動作します。
各 POST リクエスト中。
メタデータ オブジェクトを同期し、そのフィールドを更新します。
Metadata オブジェクトを解放します。
アドバイスや批判をお願いします。