[Seasar-user:5444] Re: サーバー起動時のエラー[ESSR0007]に関して

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2006年 12月 13日 (水) 15:00:09 JST


小林 (koichik) です.

Date:    Wed, 13 Dec 2006 12:01:42 +0900
From:    [E-MAIL ADDRESS DELETED]
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:5439] Re: サーバー起動時のエラー[ESSR0007]に関して

> 調べた結果、instance属性がprototypeである自作のInterceptorの中で
> sessionのコンポーネントを使用しているのがエラーの原因と考えます。
> 
> しかし、以前の投稿で自作のインターセプタのlifecycleをprototypeにして
> InterceptorLifecycleAdapterを適用すれば、requestやsessionスコープの
> コンポーネントをDIしてもらうことが可能というのを拝見しました。
> 
> 現在は、これに基づいた設定を行っているのですが、この設定では起動
> エラーが発生するということなのでしょうか?

申し訳ありませんが,そうなります.
S2 の FAQ にもあるこの方法は,Seasar2.3.7 までは
有効でしたが,Seasar2.3.8 で行った変更により
うまく動作しなくなってしまいました.

http://www.seasar.org/wiki/index.php?FAQ%2FS2AOP#z685b23f

その対応として,InterceptorAdapter というクラスを Seasar2.3.13 で
追加しました.

http://ml.seasar.org/archives/seasar-user/2006-September/006515.html
http://ml.seasar.org/archives/seasar-user/2006-September/006523.html

もし Seasar2 のバージョンを 2.3.13 以降に更新することが
できるなら,InterceptorAdapter を利用してください.

Seasar2.3.8〜2.3.12 では,インターセプタで直接 session/request
スコープのコンポーネントや HttpSession/HttpRequest を
DI してもらうことはできません.
この場合は,インターセプタでは S2Containr を受け取り,
invoke() メソッドの中で session/request スコープの
コンポーネントをルックアップしてください.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>




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