HTTPSession と Spring Bean に関して、よくわからない問題があります。web.xml で、セッション タイムアウトを 1 分に設定しました。
<session-config>
<session-timeout>1</session-timeout>
</session-config>
Ajax リクエストごとに、セッションが有効かどうかを確認します。
if(request.getSession(false) == null)
System.out.println("Session Invalid");
しかし、1 分が経過した後も有効であるように見えます (null ではありません)。
その後、私を混乱させる何かが起こります。この注釈が付いたいくつかの Bean があります。
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
最初の 1 分間は問題なく動作し、Bean の同じインスタンスが常に注入され、情報を保存して後で復元できますが、1 分待ってから別のリクエストを送信すると、Bean の別のインスタンスが注入されます。そして、私が持っていた情報は失われます。
セッションの有効期限が切れているはずなので、注入された Bean が異なるのですが、なぜrequest.getSession(false)が null ではなく、request.getSession(false).isValid()がtrue なのですか?