读书人

java session 难点

发布时间: 2011-12-11 23:19:43 作者: rapoo

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);  }} 

读书人网 >J2EE开发

热点推荐