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