[Seasar-user:16884] Re: [S2JDBC]JdbcManager にAOPを適用するには?
Takafumi Yoshida
[E-MAIL ADDRESS DELETED]
2009年 2月 12日 (木) 10:34:11 JST
いつもお世話になります。吉田@オプティクスです。
2009/02/12 9:51 Yasuo Higa <[E-MAIL ADDRESS DELETED]>:
> s2jdbc.diconにJdbcManagerの定義があるので、
> そこにaspectタグなど追加すると良いのではないかと思います。
s2jdbc.diconに、以下のように記述してみました。
useLookupAdapter=trueとするために、AspectCustomizerを作成。
<component name="jdbcAspectCustomizer"
class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="useLookupAdapter">true</property>
<initMethod name="addInterceptorName">
<arg>"entityRegistInterceptor"</arg>
</initMethod>
</component>
これをJdbcManagerに適用するため、CustomizerChainを使用して
<component name="jdbcManager"
class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">
//省略
<aspect pointcut="insert, update, insertBatch, updateBatch">
<component name="jdbcCustomizer"
class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addAspectCustomizer">
<arg>"jdbcAspectCustomizer"</arg>
</initMethod>
</component>
</aspect>
</component>
上記にように設定してみましたが、Tomcat起動時に以下のようにエラーが発生します。
java.lang.ClassCastException:
org.seasar.framework.container.customizer.CustomizerChain
at org.seasar.framework.container.impl.AspectDefImpl.getAspect(AspectDefImpl.java:81)
at org.seasar.framework.container.util.AopProxyUtil.getAspects(AopProxyUtil.java:64)
at org.seasar.framework.container.util.AopProxyUtil.getConcreteClass(AopProxyUtil.java:54)
at org.seasar.framework.container.impl.ComponentDefImpl.getConcreteClass(ComponentDefImpl.java:140)
at org.seasar.framework.container.impl.ComponentDefImpl.init(ComponentDefImpl.java:235)
at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:563)
at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:560)
at org.seasar.framework.container.factory.SingletonS2ContainerFactory.init(SingletonS2ContainerFactory.java:150)
at org.seasar.framework.container.servlet.SingletonS2ContainerInitializer.initialize(SingletonS2ContainerInitializer.java:55)
at org.seasar.framework.container.servlet.S2ContainerServlet.initializeContainer(S2ContainerServlet.java:139)
at org.seasar.framework.container.servlet.S2ContainerServlet.init(S2ContainerServlet.java:127)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
おそらくs2jdbc.diconの記述の誤りであるとおもうのですが、aspectタグで記述するには
どのように記述したらいいでしょうか?
Seasar-user メーリングリストの案内