[Seasar-user:17176] HttpServletExternalContext から取得した HttpSession が NULL となる
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2009年 4月 3日 (金) 13:28:49 JST
橋本と申します。
初めて投稿させていただきます。
現在お客様の環境でHttpServletExternalContextから突然HttpSessionを取得することが
できなくなる現象が発生しております。
HttpServletExternalContextの使用にともない、S2Filterを併せて使用しております。
具体的に説明しますと、当システムではセッション情報を扱うためにExternalContext
からHttpSessionを取得しています。
HttpSessionの取得は以下のようなコーディングとなります。
ExternalContext extCtx = SingletonS2ContainerFactory.getExternalContext();
HttpSession session = (HttpSession) extCtx.getSession();
この際に何かをきっかけに、返されたHttpSession が突然NULLとなってしまいます。
S2のソースを見る限りHttpServletExternalContext#getSessionの戻り値がNULLとなるのは、
S2FilterでExternalContextに対してHttpServletRequestが設定されなかった
(HttpServletRequestがNULL)時のみと思われますが、エラーログを見る限りS2Filterは
実行されております(トレースに表示されている)。
また、この現象は特定のお客様の環境でのみ発生しており、
自社の開発・テスト環境や他のお客様の環境では発生しておりません。
また、再現方法も不明です。
お客様情報ですと、一度発生したらアプリケーションを再起動するまで直らないとのことなので、
何か環境に依存しているのではと思われますが、よく分からない状態です。
当システムとしてはExternalContextからのHttpSession取得をやめることでの対応
を考えておりますが、実際にExternalContextから取得したHttpSessionがNULLであるとすれば
S2側で別の問題が発生するのではと危惧しております。
■動作環境
WebOTX Ver7.1 WebEdition(Tomcat5.0.28ベース)
Seasar 2.4.22
jdk150_07
■質問
どうようなタイミング、もしくは事象が発生すればHttpSessionがNULLとなるのでしょうか?
また回避策はありますでしょうか?
Seasar-user メーリングリストの案内