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