[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 メーリングリストの案内