Tomcat 7アプリサーバーでアプリケーションのタイムアウトを設定しようとしています。最初に、web.xmlでタイムアウトを1分としてテストしています。
<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
アイドル状態を1分以上、場合によっては5分以上続けると、Tomcatがアプリケーションですぐにタイムアウトを起動せず、アプリケーションで何かをクリックしてもセッションが期限切れになりません。それでも別のページに移動できます。ログインページでアイドル状態を維持しているとき、またはログアウトしているときは、セッションが破棄されていることがわかります。しかし、一度ログインが完了し、アプリケーションセッション内にいるときは、タイムアウトは発生していません。そうか
Session ID 934073ED5E9933158995EE5EB680D3F7 destroyed at Wed Nov 07 09:42:13 PST 2012
私は何が間違っているのですか?そして、で述べた後でも、<session-timeout>
コードのどこかにコードweb.xml
が必要ですか?JSFで破棄されたセッションでsession.invalidate
リダイレクトするにはどうすればよいですか?login.xhtml