[Seasar-user:9678] DaoにAOPをかけた際pointcutしたメソッド以外は動かなくなる
島村竜一
[E-MAIL ADDRESS DELETED]
2007年 8月 5日 (日) 18:38:53 JST
おせわになっております。
島村です。
DaoにAOPをかける時のxxcutについて質問です。
環境は
s2-framework-2.3.19.jar
s2-struts-1.2.10.jar
s2-dao-1.0.44.jar
です。
現在 Daoにpointcutを設定したメソッド以外は
動かなくなっております。
java.lang.AbstractMethodError: xx.xx.xx.xx.db.dao.AcceptGoodsDao$$EnhancedByS2AOP$$c623af.selectById(Ljava/lang/Integer;Ljava/lang/Integer;)
Ljp/xx/xx/xx/db/bean/AcceptGoodsBean;
at xx.xx.xx.xx.db.dao.AcceptGoodsDaoTest.testupdateLogicDeleteModifiedOnly(AcceptGoodsDaoTest.java:393)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at org.seasar.framework.unit.S2FrameworkTestCase.doRunTest(S2FrameworkTestCase.java:230)
at org.seasar.extension.unit.S2TestCase.doRunTest(S2TestCase.java:89)
at org.seasar.framework.unit.S2FrameworkTestCase.runBare(S2FrameworkTestCase.java:145)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
dixxnファイルには
以下のように定義しています。
<!-- DAO -->
<xxmponent class="xx.xx.xx.xx.db.dao.AcceptGoodsDao">
<aspect pointcut="insert">daoUpdateAop</aspect>
<aspect pointcut="updateLogicDeleteModifiedOnly">daoLogicDeleteAop</aspect>
</xxmponent>
<!-- DAO用AOP -->
<!-- 新規登録 -->
<xxmponent name="daoInsertAdvice"
class="xx.xx.xx.xx.db.dao.aop.DaoInsertAdvice" />
<xxmponent name="daoInsertAop"
class="org.seasar.framework.aop.interceptors.InterceptorChain">
<initMethod name="add"><arg>daoInsertAdvice</arg></initMethod>
<initMethod name="add"><arg>dao.interceptor</arg></initMethod>
</xxmponent>
<!-- 更新 -->
<xxmponent name="daoUpdateAdvice"
class="xx.xx.xx.xx.db.dao.aop.DaoUpdateAdvice" />
<xxmponent name="daoUpdateAop"
class="org.seasar.framework.aop.interceptors.InterceptorChain">
<initMethod name="add"><arg>daoUpdateAdvice</arg></initMethod>
<initMethod name="add"><arg>dao.interceptor</arg></initMethod>
</xxmponent>
<!-- 論理削除 -->
<xxmponent name="daoLogicDeleteAdvice"
class="xx.xx.xx.xx.db.dao.aop.DaoLogicDeleteAdvice" />
<xxmponent name="daoLogicDeleteAop"
class="org.seasar.framework.aop.interceptors.InterceptorChain">
<initMethod name="add"><arg>daoLogicDeleteAdvice</arg></initMethod>
<initMethod name="add"><arg>dao.interceptor</arg></initMethod>
</xxmponent>
上記の記述ですと
insert
updateLogicDeleteModifiedOnly
のメソッド以外はすべて動かなくなっています。
よろしくお願いします。
Seasar-user メーリングリストの案内