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