[Seasar-user:4608] Re: インターセプターへsessionスコープのコンポーネントをインジェクション

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2006年 9月 13日 (水) 16:00:51 JST


小林 (koichik) です.

Date:    Wed, 13 Sep 2006 10:14:01 +0900
From:    内田 淳一 <[E-MAIL ADDRESS DELETED]>
To:       <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:4600] インターセプターへsessionスコープのコンポーネントをインジェクション

> 1.インターセプターを定義する
> 2.セッションスコープのコンポーネントを作成する
> 3.インターセプターに2で作成したコンポーネントをセッターインジェクションす
>
インターセプタはコンテナの初期化時にインスタンス化され,
クラスに対して適用されます.
その時点では HTTP セッションやリクエストが存在しないため,
session や request スコープのコンポーネントを DI しようと
すると

org.seasar.framework.exception.EmptyRuntimeException: [ESSR0007]sessionは
nullあるいは空であってはいけません

がスローされます.

回避策として,InterceptorAdapter を添付しますので
お試しください.
使用方法は,session スコープのコンポーネントが DI される
インターセプタの instance 属性を prototype にして,

<component name="certifyInterceptor" instance="prototype"
    class="jp.co.test.CertifyInterceptor"/>

インターセプタを適用する対象には InterceptorAdapter を
設定してください.

<component class="...">
    <aspect>
        <component class="org.seasar.framework.aop.interceptors.InterceptorAdapter">
            <initMethod name="add"><arg>"certifyInterceptor"</arg></initMethod>
        </component>
    </aspect>
</component>

InterceptorAdapter の add メソッドに prototype のインターセプタの
コンポーネント名を指定します.

InterceptorAdapter は S2.3 と S2.4 の次のリリースに含めたいと
考えています.


--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: InterceptorAdapter.java
型:         application/octet-stream
サイズ:     2179 バイト
説明:       無し
URL:        http://ml.seasar.org/archives/seasar-user/attachments/20060913/d69ad614/attachment-0004.obj 


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