使用HttpSessionListener的会话少于零

时间:2014-12-15 14:10:02

标签: java spring session tomcat

我想在我的Web应用程序中添加一些逻辑,用于检查应用程序中的活动会话数。

为了记录,我正在使用在Tomcat 7上提供的Spring(4)应用程序。

这是我实施的:

public class SessionCounter implements HttpSessionListener {

    private static final Logger logger = LoggerFactory.getLogger(SessionCounter.class);

    private static final AtomicInteger ACTIVE_SESSIONS = new AtomicInteger();

    @Override
    public void sessionCreated(HttpSessionEvent event) {
        logger.debug("session count is now: " + ACTIVE_SESSIONS.incrementAndGet());
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent event) {
        int sessions = ACTIVE_SESSIONS.decrementAndGet();
        logger.debug("session count is now: " + sessions);
        if (sessions < 0) {
            logger.error("number of active sessions is less than zero ({})", sessions);
        }
    }

}

我参加了会议&lt;在云雀上0部分,认为它永远不会到达那一点,但唉,确实如此。

我知道多线程和静态非常量变量是一种特殊的诡计,但我没有看到任何明显错误的跳出来。

在此代码中ACTIVE_SESSIONS如何变得小于零?

0 个答案:

没有答案