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);

将此映射到感兴趣的 servlet 名称或 URL 模式。

这仅对系统时钟的变化敏感,请确保您的服务器始终运行 UTC。否则最好抓住System#nanoTime()

于 2012-05-21T13:16:12.087 回答