ユーザーがログアウトリンクをクリックすると、現在のデータベースのsessionScopeマップを簡単にクリアできます。
var iterator=sessionScope.keySet().iterator();
while (iterator.hasNext()) {
sessionScope.remove(iterator.next());
}
ただし、これは、サーバー上のすべてのNSFではなく、現在のNSFのsessionScope変数のみをクリアします。したがって、別のユーザーとしてログインし、そのブラウザーセッション中に以前にアクセスした他のNSFに移動した場合でも、ブラウザーセッションは以前にログオンしたユーザーのsessionScoped変数を取得します。
アプリケーションが複数のNSFにまたがっている場合、サーバー上のすべてのNSFからブラウザーのセッションをどのようにクリアしますか?
アップデート
話し合いの後、facesContext.getExternalContext()。getRequest()。getSession(false)からセッションを取得し、そのセッションでinvalidate()メソッドを呼び出しました。それは機能しませんでした、それはまだ同じセッションIDを持っていて、スコープされた変数は保持されます。デクランのクッキーの考えが原因だと思います。これは、Notesクライアントでもかなり頻繁に使用されていると思います。