一回エラーになるとブラウザを開き直さないと回復しないバターンがあったらこのケースの可能性大。
サーブレットコンテナは停止時に、セッションを永続化して起動時に復元しようとしている。
Tomcat のディフォルトだと SESSIONS.ser というファイルに保存している。
セッションに保存しているデータが正しく永続化されてないと正しく復元されない。
フェイルオーバー時や再起動時にセッションの中身が null になりNullPointerExceptionが発生したり、 Cannot get property ‘xxxxxx’ on null object というエラーが出る。
セッションに永続化した際に正しく保存するには
1 2 3 |
Serializable |
を実装すればよい。
1 2 3 4 |
class XXXXXXX implements Serializable { private static final long serialVersionUID = 1L |
serialVersionUIDはググれば出てくると思うが(ググっても説明が下手でわかりづらいかったら)
新規に作成時は、 1L
更新時には(クラスの構造が変わったら)、適当な値。(前と別の値ならなんでもよい)
と覚えておけばよい。