我正在尝试在 Tomcat 7 应用程序服务器上设置我的应用程序超时。首先我在 web.xml 中将超时时间设置为一分钟
<session-config>
<session-timeout>1</session-timeout>
</session-config>
我正在使用HttpSessionListener来确保我的超时工作正常。我在 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 中
<listener>
<listener-class>com.test.util.HttpSessionChecker</listener-class>
</listener>
但是当启动我的服务器并启动我的应用程序时,我看到会话仅在登录页面上启动。
Session ID 934073ED5E9933158995EE5EB680D3F7 created at Wed Nov 07 09:39:13 PST 2012
当我保持空闲超过一分钟或超过五分钟时,Tomcat 不会立即在我的应用程序中触发 Timeout 并单击我的应用程序中的某些内容 Session is not Expired.Still 我能够导航另一个页面。但是当我在登录页面上处于空闲状态或注销时,我看到会话被破坏。但是,一旦登录完成,当我在应用程序会话中时,超时就不会发生。我懂了
Session ID 934073ED5E9933158995EE5EB680D3F7 destroyed at Wed Nov 07 09:42:13 PST 2012
我究竟做错了什么?<session-timeout>
甚至在我提到web.xml
我是否需要代码session.invalidate
中的某个地方的代码?如何重定向到login.xhtml
在 JSF 中销毁的会话中?