我目前有一个spring mvc的项目,用security 登陆,在filter里获取session,取在线人数。
我发现系统在运行过程中,有的时候只有我一个人登陆,会忽然创建好多session,然后在线人数就到了5k以上
请问这个是什么原因造成的。
我发现系统在运行过程中,有的时候只有我一个人登陆,会忽然创建好多session,然后在线人数就到了5k以上
请问这个是什么原因造成的。
解决方案 »
- MyEclipse 启动 Tomcat ,控制台没反应
- 如何将变量设置为未赋值状态
- Silverlight播放器使用问题。谢谢各位了
- 谁对JOnAS这个应用服务器有所了解么
- 看过struts2权威指南的朋友请进
- JSP中怎么用JFREE CHAR 连接MYSQL
- 请前辈帮帮我:我想当软件开发工程师
- 一个捆牢一天的问题不能解决;up有分
- 我在用Eclipse开发EJB的时候,老是用WebLogic就出错,Jboss就没事,
- 请问JBuiler8的编辑器的光标对位很怪,有什么方法设置?
- hibernate关于类表继承的问题,有外键关联的子类配置文件怎么设置?
- 请解答我心中对Hibernate无尽纠结吧
HttpSession session = event.getSession();
ServletContext context = session.getServletContext();
HashSet sessions = (HashSet) context.getAttribute("sessions");
if (sessions == null) {
sessions = new HashSet();
sessions.add(session);
context.setAttribute("sessions", sessions);
}
sessions.add(session);
super.sessionCreated(event);
super.sessionDestroyed(event);
context.setAttribute("sessions", sessions); 这是filter的代码
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
String sID=(String)request.getSession().getAttribute("SESSIONID");
if(!session.getId().equals(sID)){
session.setAttribute("SESSIONID", session.getId());
...
}
import java.util.Iterator;import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener{
//创建集合保存session对象
static Hashtable sessionList=new Hashtable(); //session创建触发的方法
public void sessionCreated(HttpSessionEvent event) {
sessionList.put(event.getSession().getId(), event.getSession());
} //session过期或者销毁触发的方法
public void sessionDestroyed(HttpSessionEvent event) {
sessionList.remove(event.getSession().getId());
}
//返回全部session对象集合
static public Iterator getSet(){
return sessionList.values().iterator();
} //根据session对象的id返回session对象
static public HttpSession getSession(String sessionId){
return (HttpSession)sessionList.get(sessionId);
}
}
action类中调用 int count=0;
List userList=new ArrayList();
Iterator iterator = SessionListener.getSet();
while(iterator.hasNext()){
HttpSession session=(HttpSession)iterator.next();
User user=(User)session.getAttribute(MachineConstant.LOGIN_KEY); //得到单个session值
if(userList==null){
}else{
userList.add(user.getLoginname());
count++;
}
}
setAttribute("userList",userList);
setAttribute("count",count);在web.xml中配置监听 <listener>
<listener-class>com.jdlx.common.SessionListener</listener-class>
</listener>