[JAVA] フェイルオーバー時や再起動時に NullPointerException や Cannot get property ‘xxxxxx’ on null object

一回エラーになるとブラウザを開き直さないと回復しないバターンがあったらこのケースの可能性大。

サーブレットコンテナは停止時に、セッションを永続化して起動時に復元しようとしている。
Tomcat のディフォルトだと SESSIONS.ser というファイルに保存している。

セッションに保存しているデータが正しく永続化されてないと正しく復元されない。
フェイルオーバー時や再起動時にセッションの中身が null になりNullPointerExceptionが発生したり、 Cannot get property ‘xxxxxx’ on null object というエラーが出る。

セッションに永続化した際に正しく保存するには

を実装すればよい。

serialVersionUIDはググれば出てくると思うが(ググっても説明が下手でわかりづらいかったら)
新規に作成時は、 1L
更新時には(クラスの構造が変わったら)、適当な値。(前と別の値ならなんでもよい)
と覚えておけばよい。




[Grails (グレイルズ) ] org.codehaus.groovy.runtime.GStringImpl cannot be cast to java.lang.String ようなエラー

マップのキーに GString を使用しているとエラーになる。

こんな感じで使っていたらアウト

こういう風にする

変数に文字列とか連結したい時は、