これは私の先輩の一人が私に尋ねた問題です。
1) J2EE Application Server の 2 つの異なるノードがあります: ノード 1 とノード 2. (下の図に示すように)
2) また、休止状態の二次キャッシュが有効になっています。
3) 問題は次のとおりです。ユーザーがログイン ページの URL にアクセスし、この要求がノード 1 に送信され、ユーザーがログインしてからユーザーがログアウトしたと想定します。
4) 再度、ログイン ページに対するユーザー リクエスト。今回は、リクエストはノード 2 に送信されます。ここで、ユーザーはログインしてパスワードを変更し、ログアウトします。
問題は、ユーザーが新しいパスワードでログインを試み、要求がノード 1 に送信されたときです。ユーザーはシステムにログインできるでしょうか?
それができない場合、ノード 1 で新しいパスワードを使用してユーザーをログインさせるにはどうすればよいでしょうか。
Note: We have a LoginUser table where the Username and passwords are stored.
私の答え :
私の意見では、ユーザーがノード 1 を使用してログインしようとした後、ログアウトする場合が考えられます。
Hibernate は次のクエリを起動します。
select * from Login where username = "John";
そして、このエントリはノード 1 の第 2 レベルのキャッシュにキャッシュされます。
ここで、ノード 2 を使用してシステムにログインし、パスワードを変更します。再度ノード 1 にログインしようとしますが、新しいパスワードを使用してログインすることはできません。これは、今回はノード 1 の第 2 レベルのキャッシュに古いパスワードが含まれているため、古いパスワードを使用してログインできるためです。
これが、新しいパスワードでノード 1 にログインできない理由です。
この問題の解決策は、第 2 レベルのキャッシュを複製することです。
同じ問題に関する意見を親切に共有してください。