当前位置: 代码迷 >> J2EE >> java session 难点
  详细解决方案

java session 难点

热度:451   发布时间:2016-04-22 03:36:24.0
java session 难题
关于在线人数的问题在网上找了N久才知道如果某用户是非正常退出系统这个session就会一直存在,直到超时为止。 
如果把超时设的短一些的话在客户查看页面必需一直的点某些东西。 

太麻烦,难道就没有一个更好的方法来解决这个问题吗?
后来听人说ajax可以实现,查了一下好像是在关闭浏览器时向服务器发一个断开请求。 

但如果是网线断了要怎么办腻?或是机器突然断电了怎么办腻?

------解决方案--------------------
我给一个比较有趣的做法,当然很耗费资源。那就是持续连接。。。。

你做一个包含页面,用ajax/iframe里面调用。让每个可访问的页面都调用这个。

这个页面的代码大致如下。

Java code
while(true){  try{    out.println(); // 输出一个空行     out.flush(); // 这一句必须写    // 检查当前在线人员,确保它没有被删掉    check(session);    try{      Thread.sleep(10); // 休眠一下吧    }catch(Exception ex){}  }catch(Exception ex){    // 一旦发现异常,则证明此用户已经离开当前页面    // 从在线人员里面删掉当前人员     remove(session);  }}
  相关解决方案