有一个不更新用户的servlet';s java会话

有一个不更新用户的servlet';s java会话,java,servlets,gwt-rpc,Java,Servlets,Gwt Rpc,我有一个servlet(GWT-RPCServlet),它只用于检查用户会话是否已被清除(通过查看会话变量是否为null) 问题是,当在用户浏览器中的计时器上运行时,每次检查会话是否已清除的请求都会将会话时间再延长30分钟。我可以尝试使计时器请求的频率低于会话超时。例如,如果会话每30分钟过期一次,而我每35分钟检查一次,则最长需要70分钟才能正确检测到会话已死亡 有人知道一种让servlet请求不续订会话的方法吗?servlet规范要求访问会话的任何请求都更新会话的上次访问时间,从而延长会话的

我有一个servlet(GWT-RPCServlet),它只用于检查用户会话是否已被清除(通过查看会话变量是否为null)

问题是,当在用户浏览器中的计时器上运行时,每次检查会话是否已清除的请求都会将会话时间再延长30分钟。我可以尝试使计时器请求的频率低于会话超时。例如,如果会话每30分钟过期一次,而我每35分钟检查一次,则最长需要70分钟才能正确检测到会话已死亡


有人知道一种让servlet请求不续订会话的方法吗?

servlet规范要求访问会话的任何请求都更新会话的上次访问时间,从而延长会话的寿命。“正确”的解决方案取决于您需要知道会话是否已过期的确切原因。我怀疑您真正想要的hwat是一个
javax.servlet.http.HttpSessionListener

这是我目前的解决方案

创建一个servlet过滤器,用于更新名为“CUSTOM_LAST_session_ACCESS”的会话变量。对webapp的任何请求都会将此变量更新为当前时间戳

如果该变量在过去30分钟内已更新,则通过ajax进行Javascript计时器检查,如果未更新,则使会话无效


这意味着如果您从未关闭浏览器,会话将通过javascript调用失效。如果关闭浏览器,标准Java会话清理会发生,因为在30分钟内没有HTTP请求发生。

禁用特定jsp的会话创建会起作用吗?我需要能够在全javascript应用程序中使用客户端计时器(通过GWT)检测到您的会话已结束,并显示一个弹出窗口来警告此情况或重定向到登录页面。会话侦听器将不会帮助您。您的方法在我看来很好。