0

これは私の先輩の一人が私に尋ねた問題です。

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 レベルのキャッシュを複製することです。

同じ問題に関する意見を親切に共有してください。

4

1 に答える 1