質問: request.getSession(); session.setMaxInactiveInterval(-1); ``` 上記をローカルmac/tomcat7で実装していますが、 1日たった後でmacを再起動しましたが、 コード中で、session.setAttribute("key", key); したkeyが session.getAttribute("key"); で取得できなくなります。 この原因は、tomcat セッションはデフォルトは、メモリに保持しているので、 macを再起動してしまう、または、tomcatを再起動してしまうと、 メモリから消えてしまい、セッションも消えてしまうになりますでしょうか。 また、セッションを切れなくするには、以下のようにファイルに保存する形で よいでしょうか。 http://qiita.com/shintaness/items/73d176c0a4f369608898#2-2 何卒教えて頂ければ幸いです。 --追記-- context.xmlにある以下にて ``` ``` 「Tomcat停止時にセッション状態をファイルに保存して、起動時に読み込んでセッションを永続化するようになってます」 という動作をするとのことなので、 少なくとも、tomcat起動、再起動では、セッション情報は消えないになりますかね。 だとしますと、私がmacを再起動したときに、 tomcatの停止しないまましたので、強制終了になり、セッションが保存されないままとなったため、 セッションがきえてしまったという現象になった?でしょうか。
回答: http://tomcat.apache.org/tomcat-6.0-doc/config/manager.html#Special_Features > > Whenever Apache Tomcat is shut down normally and restarted, or when an application reload is triggered, the standard Manager implementation will attempt to serialize all currently active sessions to a disk file located via the pathname > > > とあります。"shut down normally"でなければ、セッションは永続化されないと読めますね。