[Seasar-user:17180] Re: HttpServletExternalContext から取得した HttpSession が NULL となる

OKADA Ikue [E-MAIL ADDRESS DELETED]
2009年 4月 3日 (金) 18:27:03 JST


岡田と申します。


> 現在お客様の環境でHttpServletExternalContextから突然HttpSessionを取得することが
> できなくなる現象が発生しております。
(中略)
> お客様情報ですと、一度発生したらアプリケーションを再起動するまで直らないとのことなので、
> 何か環境に依存しているのではと思われますが、よく分からない状態です。

以前、[Seasar-user:15421]で、もしかしたら似た現象かもしれない内容を
質問させていただいたことがあります。

http://ml.seasar.org/archives/seasar-user/2008-August/015323.html
http://ml.seasar.org/archives/seasar-user/2008-August/015324.html
http://ml.seasar.org/archives/seasar-user/2008-August/015330.html

そのときは解決に時間がかかり、結局、根本的な原因はわからなかったのですが
以下のように回避できました。


コンポーネントを使うEJBでは、当初、ejbCreate()実行時に
SingletonS2ContainerFactory#getContainer()でS2Containerのインスタンスを取得し、
フィールドに保持していました。

private transient S2Container container;
...
public void ejbCreate() {
  container = SingletonS2ContainerFactory.getContainer();
  ...
}

これを、S2ContainerFactoryからS2Containerを生成するように変更したところ
稼働中にExternalContextがnullになるエラーは発生しなくなりました。

private transient S2Container container;
...
public void ejbCreate() {
  container = S2ContainerFactory.create("app.dicon");
  container.init();
  ...
}


状況は違いますが、もし何かのヒントになりましたら幸いです。
# 以前のときに結果のご報告ができていなくて、申し訳ございません。。。


よろしくお願いいたします。




Seasar-user メーリングリストの案内