在tomcat上运行的java servlet中,我可以使用什么为每个会话实现后台进程?
我希望为每个用户运行一个函数,定期进行会话,检查用户是否处于活动状态。如果未激活,该函数将从servlet上下文中的用户列表中删除该用户,并清除该用户会话 我可以使用什么来为每个用户定期运行函数 据我所知,servletcontextlistener在servlet的生命周期中只运行一次,而不是针对每个用户,因此它不可用。此外,建议不要在servlet中使用线程 编辑:在tomcat上运行的java servlet中,我可以使用什么为每个会话实现后台进程?,java,ajax,tomcat,servlets,dojo,Java,Ajax,Tomcat,Servlets,Dojo,我希望为每个用户运行一个函数,定期进行会话,检查用户是否处于活动状态。如果未激活,该函数将从servlet上下文中的用户列表中删除该用户,并清除该用户会话 我可以使用什么来为每个用户定期运行函数 据我所知,servletcontextlistener在servlet的生命周期中只运行一次,而不是针对每个用户,因此它不可用。此外,建议不要在servlet中使用线程 编辑: 用户(使用ajax)调用一个操作,该操作包含更新我为每个用户存储的变量的函数,该变量指示他们最后一次联系服务器的时间。您可能正
用户(使用ajax)调用一个操作,该操作包含更新我为每个用户存储的变量的函数,该变量指示他们最后一次联系服务器的时间。您可能正在查找
javax.servlet.http.HttpSessionListener
。
创建一个,在
web.xml
中注册,然后让sessionDestroyed
完成您的工作。我可以用两种方法来思考:
后台线程如何“检查用户是否处于活动状态”?您通常不会有到客户端的持久连接,因此您所能知道的只是客户端何时发送请求。通常,您要做的是让客户端定期发送心跳消息(例如,使用AJAX)。这不是您可以配置的会话生命周期已经为您做的事情吗?会话将过期,但当它过期时,我希望运行一个函数,将用户从servlet上下文中的变量中删除。我不知道当函数在web.xml文件中的会话过期时如何运行它。请不要生成其他线程。听录音,看起来很有希望。我将尝试实现它,看看它是否有效。谢谢