WebAppサーバーの使用禁止/SESSIONの持続化を有効にする

1650 ワード

観察することによって、この二つのエラーはいずれも「loading sessions from persistent storge」の時に発生します。つまり、恒久化されたファイルからsessionを復元するときです。Tomcatが容器を閉じる時にsessionのデータをファイルシステムに持続化できることはよく知られています。容器を再起動する時にそれを復元しますが、前提条件はsessionに保存されているデータの種類がjava.io.Serialzableインターフェースを実現しています。glassfishのServlet容器はTomcatに基づいて構築されていますので、原理は基本的に同じです。そしてGlassfishはデフォルトオープンsessionの持続化です。そこで最初の問題を解決する答えがあります。cn.beans.UserSessionのtime属性はjava.util.Dateタイプです。DateはSerializableインターフェースを実現していません。したがって、Dateのサブクラスを作成してSerialzableインターフェースを実現し、timeをこのサブクラスのオブジェクトと定義すればいいです。第二の問題を解決するには、sessionに保存されているすべてのデータが順序化されていることを徹底的に保証する必要があります。もちろんsessionの持続化を考えなければ、このようにする必要はないです。sessionの持続化機能を無効にするだけでいいです。この点でtomcatとglassfishは少し違っています。1.Tomcatで無効/有効化されたserver.xmlに以下の内容を追加します。




















.Glassfishで使用禁止/有効化されています。Glassfishプロジェクトではsun-web.xmlという有名なファイルは、以下の設定を無効にしてください。
  







session Filenameの値は、カスタム名のファイルを指定してsessionデータを保存するためのものであり、それを空の値に設定するとsessionの永続化をキャンセルすることができる機能です。