java - session 超时配置不起作用?

标签 java servlets session-timeout

web.xml中我有这个

 <session-config>
   <session-timeout>2</session-timeout>
 </session-config>

 <listener>
  <listener-class>myapplication.SessionListener</listener-class>
 </listener>

SessionListener.java中我有

public void sessionDestroyed (HttpSessionEvent event){    
   System.out.println("Visitor Removed!!");
}

但似乎 System.out.println("Visitor Removed!!") 从未被执行过。我是 Tomcat 6 和 JSP 的新手。请问有什么建议吗?

最佳答案

这至少有 3 个原因:

  1. session 从未创建过。还要监听 sessionCreated()
  2. 你有点不耐烦。 session 销毁是延迟且间隔发生的。它不会立即发生。如果您在同一 session 中触发请求,而该 session 已过期,则将调用sessionDestroyed()。或者,如果您有更多的耐心,服务器将运行其低优先级计时器作业来获取所有过期的 session 。
  3. 您没有像您认为的那样在类路径中使用 myapplication.SessionListener 类,也许类路径中实际没有 sysout 行。

关于java - session 超时配置不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2641251/

相关文章:

java - 根据响应禁用过滤器

servlets - web.xml 中的 session-timeout 和 max-age 有什么区别?

java - Android Studio gradle(错误 :Failed to resolve: com. android.support.constraint:constraint-layout-so)

java - 如何在X25519中为PrivateKey生成PublicKey?

java - 对运行不同进程的同一应用程序使用不同的 log4j 配置文件

java - 如何在 Servlet 过滤器中执行昂贵的一次性初始化?

java - 将java类实例从javascript(通过ajax)发送到jsp或servlet

ibm-mobilefirst - 在 IBM Worklight Adapter-based Authentication 中注销时 session 未结束

Keycloak session 和 token 超时 : Client login timeout

java - 冒泡排序的输出不正确