[Seasar-user:6354] インターセプターへのDIについて

松山 大樹 [E-MAIL ADDRESS DELETED]
2007年 2月 26日 (月) 18:56:43 JST


 松山です。

 {Seasar-user:4600] などでも言及されていますが、インターセプターへ、session スコープの
コンポーネントをDI する場合の、dicon ファイルの記述について、教えてください。

 S2-2.4.7 + S2JSF1.1.1 です。

 現在、アクションへのインターセプターとして、
----------------------------------------------------------------------
<component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
<component name="actionThrowsInterceptor" class="hoge.interceptors.ActionThrowsInterceptor"/>

<component name="actionInterceptorChain" class="org.seasar.framework.aop.interceptors.InterceptorChain">
	<initMethod name="add"><arg>traceInterceptor</arg></initMethod>
	<initMethod name="add"><arg>actionThrowsInterceptor</arg></initMethod>
</component>
----------------------------------------------------------------------
 と定義し、
----------------------------------------------------------------------
<component class="org.seasar.framework.container.autoregister.AspectAutoRegister" >
	<property name="interceptor">actionInterceptorChain</property>
	<initMethod name="addClassPattern">
		<arg>"hoge"</arg>
		<arg>".*ActionBean,.*ActionImpl"</arg>
	</initMethod>
</component>
----------------------------------------------------------------------
 のように設定しています。

 このactionInterceptorChain に、もう一つインターセプターを追加しようとしています。
 新しいインターセプターでは、session スコープのコンポーネントを使用したいと考えています
(セッターインジェクション)。

 そこで、
----------------------------------------------------------------------
<component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>
<component name="actionThrowsInterceptor" class="hoge.ActionThrowsInterceptor"/>
<component name="newActionInterceptor" class="hoge.NewActionInterceptor"/>

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

<component name="actionInterceptorChain" class="org.seasar.framework.aop.interceptors.InterceptorChain">
	<initMethod name="add"><arg>traceInterceptor</arg></initMethod>
	<initMethod name="add"><arg>actionThrowsInterceptor</arg></initMethod>
	<initMethod name="add"><arg>interceptorAdapter</arg></initMethod>
</component>
----------------------------------------------------------------------

 と変更してみたところ、NewActionInterceptor#invoke は実行されるのですが、DI されてほしい、
session スコープのコンポーネントがDI されていません。
 NewActionInterceptor は、AbstractInterceptor のサブクラスとして作成したものです。

 どの記述がおかしいのでしょうか?

 よろしくお願いします。


-- 
::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
:::   ITシステム・インテグレートDiv.
:::  Web・ソリューション&システム開発Unit.
:::   松山 大樹 - [E-MAIL ADDRESS DELETED]





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