私たちのものは、Weblogic 10 (本番環境でクラスター化) で実行される JSP/JSF ベースのアプリです。(ログインした) ユーザーがオブジェクトのタイムスタンプ ベースのロックを取得するシナリオがあります。ロックを取得すると、60 秒ごとにコードが実行され、ロックが更新/無効化されます。現在、ロックの詳細はデータベースに保持されています。つまり、60 秒ごとにロックを更新するために、更新クエリが起動されます。
このロジックを、データベースへのアクセスを回避できるアプリケーション層に移動しようとしています。そのため、以前に DB に書き込まれたデータは、HashMap で維持されるようになりました。ただし、HashMap は ServletContext オブジェクトに格納されます。新しいユーザーのロックを取得するために、 HashMap が ServletContext オブジェクトから取得され、操作が行われます。
しかし、ServletContext オブジェクトがクラスター間で複製されていないことが明らかになりました。たとえば、ユーザー 1 がオブジェクト 1 へのロックを取得したときにノード 1 で変更された HashMap があり、ユーザー 2 がログインすると、オブジェクト 1 へのロックを取得しようとしますが、要求はノード 2 にヒットします。私は、ロジックが失敗すると思いますよね?node-2 には更新された HashMap がないためです。
アイデア/提案はありますか?助けてください。
ありがとう、A