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