我正在基于彗星的会话注销系统,其实我想检查用户会话是否活动或没有发送ajax请求每次到server.so当用户登录第一次,一个请求到达服务器(Servlet)并持续到sessionout(一个线程检查),一个线程如何处理server.unable上的每个用户的会话以便用线程实现,任何帮助都将不胜感激。无法处理基于彗星的线程在服务器端
0
A
回答
1
我认为一个线程每隔1分钟(或更少)检查整个会话人员,只是删除过期的会话,而且这几乎是不可能的,每个会话都有它自己的生命线程,使服务器变得沉重。 如果你试图做同样的,你需要一个线程(daemon模式会好起来的),一个1分钟后睡眠检查所有会话,这样的事情
class Foo implements Runnable{
List<Session> sessions;
public void run(){
while(true){
try{
Thread.sleep(60000);
synchronized(sessions){
for(Session sx:sessions){
if(sx.isExpired()){sx.dispose();sessions.remove(sx);}
}
}
}catch(Exception e){}
}
}
}
我希望我的问题正确,可以给一些手:)
0
所以我的建议是保持每个会话在一个全局引用,像一个单例类中的列表,然后该类还运行一个线程刷新每个会话每1分钟,像这样的事情,但我不DON知道服务器使用HttpServeltRequest引用或使用HttpSession本身刷新会话过期时间,无论如何,因此您可以关注请求或会话引用。
public class SessionHolder implements Runnable{
private List<HttpSession> sessions;
public void addSession(HttpSession s){sessions.add(s);}
public void removeSession(HttpSession s){Session.remove}
public void run(){
while (true){
try{
Thread.sleep(60000);
//refreshing sessions
for(HttpSession sx:sessions){
sx.setAttribute("noExpire","me again");//this may causes to refresh the session expire time
}
}catch(Exception e){}
}
}
}
相关问题
- 1. 多线程彗星服务器库
- 2. 将彗星与彗星服务器集成的设计模式
- 3. jQuery的彗星推,没有彗星服务器
- 4. 快速单线程彗星服务器,可能吗?
- 5. 选择彗星服务器的问题
- 6. 面向服务器端的彗星实现的好语言
- 7. c#彗星服务器冻结IIS
- 8. 彗星与PHP套接字服务器?
- 9. 彗星Web服务器实现
- 10. 彗星服务器端口号码旁边apache
- 11. 什么代码应该是服务器端的彗星应用程序
- 12. 异步处理中的JBoss 6(“彗星”)
- 13. Flotr&服务器端处理
- 14. 处理JS服务器端
- 15. 远程处理(服务器端)
- 16. 由于猿彗星服务器不能使用ajax-upload
- 17. 无法在React服务器端渲染中处理UnhandledPromiseRejectionWarning
- 18. 多线程服务器可以处理多少个客户端?
- 19. nginx代理彗星
- 20. NET远程处理和无法连接到远程服务器的客户端
- 21. 彗星(服务器推送)我在找的答案?
- 22. iframe中的彗星服务器数据是否正在积累?
- 23. 服务器无法处理请求
- 24. System.Web.Services.Protocols.SoapException:服务器无法处理请求
- 25. DWR异常处理在服务器端
- 26. Asp.net在服务器端处理事件
- 27. 在服务器端处理JSON
- 28. 基于彗星的PHP应用程序的nginx或apache?
- 29. 浏览器和android的Messenger - 彗星,电梯服务器
- 30. Rails datatables服务器端处理无法排序/查找
如果100个用户登录一次,然后100请求将被搁置,所以怎么能servlet响应(彗星响应)哪个会话已被破坏 – raw
你的意思是彗星响应特定用户'保持alive'连接? – 2013-10-09 16:35:23
是的,如何处理该特定会话的彗星响应 – raw