Tomcat でセッション( javax.servlet.http.HttpSession )を
永続化(=つまり Tomcat 再起動後も使用できるようにすること)させるには、
context.xml の設定を変更することで可能になります。
(以下の情報は Tomcat 6, 7 のケースになります)
※ context.xml は、Amazon EC2 に Tomcat をインストールした場合は以下にあります。
##設定値
context.xml に、
<Manager pathname=""/>
を記載しないと、 SESSIONS.ser という永続化ファイルが作成されます
※インストール直後のデフォルトがこれです
<?xml version='1.0' encoding='utf-8'?>
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
</Context>
context.xml に、
<Manager pathname="foo.ser"/>
と記載すると、foo.ser という永続化ファイルが生成されます
<?xml version='1.0' encoding='utf-8'?>
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<Manager pathname="foo.ser" />
</Context>
context.xml に、
<Manager pathname=""/>
と記載すると、 永続化ファイルは作成されません
<?xml version='1.0' encoding='utf-8'?>
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<Manager pathname="" />
</Context>
##作成した永続化ファイルのありか
server.xml または コンテキストファイルに記載された workDir の場所に生成されます
※ Amazon EC2 に Tomcat をインストールした場合のデフォルトは以下になります
##永続化ファイルの作成タイミング
Tomcat の終了時に生成され、起動時に破棄されます。
##保存される情報について
セッションIDの他に HttpSession.setAttribute で設定した情報も永続化されます。
ただし、第2パラメータの java.lang.Object value は、
実クラスがシリアライズ可能な Serializable でないと値が正常に保存されません のでご注意を。
↓これだと復元されないので
public class SessionAttr {
private String username;
private String group;
//以下省略 (setter getter など)
}
↓ Serializable を implements します
import java.io.Serializable;
public class SessionAttr implements Serializable {
private String username;
private String group;
//以下省略 (setter getter など)
}
※ java.lang.String の場合は Serializable が implements されているので、値が正常に保存されてますが
独自定義したクラスで、Serializable でない場合は、toString() の値が設定されているだけのように見えます。