我想在我的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如何变得小于零?