0

継続的デリバリーを備えたシステムの青緑色のパターンに取り組んでいます。30分後にユーザーにサーバーの切り替えを強制したいと思います。JSF 2でアプリケーションを開発しています。ユーザーがアクティブであるかどうかに関係なく、特定の時間の後にセッションを終了させる簡単な方法はありますか?

4

1 に答える 1

1

基本的に次の仕事をするフィルターを実装します。

HttpSession session = request.getSession();

if (session.isNew()) {
    session.setAttribute("start", System.currentTimeMillis());
}
else {
    long start = (Long) session.getAttribute("start");

    if (System.currentTimeMillis() - start > (30 * 60 * 1000)) {
        session.invalidate();
        response.sendRedirect("expired.xhtml");
        return;
    }
}

chain.doFilter(request, response);

これを目的のサーブレット名またはURLパターンにマップします。

これはシステムクロックの変更にのみ影響されます。サーバーが常にUTCで実行されていることを確認してください。System#nanoTime()それ以外の場合は、代わりにつかむ方がよいでしょう。

于 2012-05-21T13:16:12.087 に答える