web.xml中设置的超时在java 中不起作用

我正在尝试在Tomcat 7应用服务器上设置我的应用程序超时。首先我在web.xml中测试我的超时为一分钟

 1  

我正在使用HttpSessionListener来确保我的Timeout工作正常。我在web.xml中声明了我的sessionListener类。

 public class HttpSessionChecker implements HttpSessionListener { public void sessionCreated(HttpSessionEvent event) { System.out.printf("Session ID %s created at %s%n", event.getSession().getId(), new Date()); } public void sessionDestroyed(HttpSessionEvent event) { System.out.printf("Session ID %s destroyed at %s%n", event.getSession().getId(), new Date()); } } 

并在web.xml中

  com.test.util.HttpSessionChecker  

但是当启动我的服务器并启动我的应用程序时,我看到会话仅在登录页面上启动。

 Session ID 934073ED5E9933158995EE5EB680D3F7 created at Wed Nov 07 09:39:13 PST 2012 

当我保持空闲超过一分钟或超过五分钟时,因为Tomcat不会立即在我的应用程序中触发Timeout并点击我的应用程序中的某些内容会话未过期。但我能够导航另一页。但是当我在登录页面上保持空闲或注销时,我看到会话被销毁。 但是,一旦完成登录,当我在应用程序会话内部时,就不会发生超时。 我知道了

 Session ID 934073ED5E9933158995EE5EB680D3F7 destroyed at Wed Nov 07 09:42:13 PST 2012 

我究竟做错了什么? 甚至在我提到web.xml中的 ,我是否需要在Code中的某个地方使用代码session.invalidate ? 如何在JSF中销毁的会话中重定向到login.xhtml

你做错了什么。 当会话到期时,后台线程将每隔x分钟检查一次。 这是特定于容器的。 即,在您指定的时间后,不保证过期。 我知道在tomcat中你可以在server.xml文件中轻松修改这个检查间隔。