[Seasar-user:4533] Re: インターセプターチェインの設定方法について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2006年 9月 5日 (火) 16:40:18 JST
小林 (koichik) です.
Date: Tue, 5 Sep 2006 16:11:14 +0900
From: [E-MAIL ADDRESS DELETED]
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:4531] Re: インターセプターチェインの設定方法について
> > これらの instance 属性は prototype にしてください.
> > request だと,コンテナの初期化時にインスタンスを生成できない
> > 場合もあります.
>
> 確かにコンテナの初期化時点ではインスタンスを生成できずに
> Exceptionが発生しています。
> リクエストがあった段階でインスタンスが生成されれば良いと
> 考えて放置しておりました。
(^^;
お手数ですが,その例外をコピペして頂けますか?
インターセプタ (のインスタンス) は,適用対象となるコンポーネントの
インスタンスではなく,クラスに対し適用されます.
Action など request スコープのコンポーネントであっても,
インターセプタが適用される (クラスがエンハンスされる) のは
コンテナ初期化時の一回のみです.
その時に例外が発生しているため,インターセプタが適用されず,
今回の現象になったものと思われます.
> > なお,インターセプタチェインの instance 属性はデフォルト
> > (singleton) のままで構いません.
> 先ほど、久保さんからの指摘でインターセプターチェインの
> instance 属性を "request" に変更したら、何故か動作して
> しまいました。
これはちょっと分かりません.
今回のケースでは,インターセプタチェイン自信がインスタンス化
されるのはそれが request であってもコンテナ初期化時に一回だけで
あるため,singleton と違いはありません.
myActionInterceptor などの instance 属性を prototype にすれば,
インターセプタチェインの instance 属性は指定しなくても動くのでは
ないかと思います.
--
<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 メーリングリストの案内