gpt4 book ai didi

java - Tomcat 持久和用户特定的 session 计数器

转载 作者:行者123 更新时间:2023-11-28 22:32:16 25 4
gpt4 key购买 nike

我需要制作持久的和用户特定的 session 计数器。这是我做的

package my.package;

import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSession;
import java.util.HashMap;

public class SessionCounter implements HttpSessionListener {

private static HashMap activeSessions;

public SessionCounter() {
//How to restore session count?
activeSessions = new HashMap();
}

public void sessionCreated(HttpSessionEvent se) {
HttpSession session = se.getSession();
String userName = session.getAttribute("username");
Integer count = (Integer) activeSessions.get(userName);
if (count != null) {
activeSessions.put(userName, Integer.valueOf(count.intValue() + 1));
} else {
activeSessions.put(userName, new Integer(1));
}
}

public void sessionDestroyed(HttpSessionEvent se) {
HttpSession session = se.getSession();
String userName = session.getAttribute("username");
Integer count = (Integer) activeSessions.get(userName);
if (count != null && count.intValue() > 0) {
activeSessions.put(userName, Integer.valueOf(count.intValue() - 1));
}

}

public static HashMap getActiveSessions() {
return activeSessions;
}
}

即使在重新启动 tomcat 后 session 仍处于 Activity 状态,但存储在我的 activeSessions 变量中的 session 计数丢失了。重启后如何恢复 session 数?

最佳答案

当 Tomcat 关闭时(即通过关闭脚本而不是通过终止进程),所有 session 都会序列化并在下次启动时恢复。

HttpSessionListener 将始终被重新创建,因此您的 HashMap 得到新实例化并且信息丢失。您将必须编写一个实现可序列化的模型,它保存您的数据,并在 Tomcat 关闭时将其存储到磁盘。

关于java - Tomcat 持久和用户特定的 session 计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10247977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com