[Seasar-user:2960] Re: Seasar2.3.1から2.3.3へ移行すると、diconのinitMethodのregisterAllが使えなくなるのでは?(質問)
beans no
nobeans
2005年 11月 29日 (火) 22:52:19 JST
nobeansです。
もしかすると私のところで発生してる事象と同じかもしれません。
赤田さんのサンプルでは、backport175アノテーションでDAOインタセプタを適用させていますよね。
私のところではTigerアノテーションでやってますが、同じように2.3.1⇒2.3.2にアップデートした瞬間からアスペクトがかかっていないときに起こるような例外が発生します。
(一部抜粋)
Caused by: java.lang.NoSuchMethodError:
jpetstore.integration.subdao.impl.AccountSubDaoImpl$$EnhancedByS2AOP$$16917ee.findByUserId(java.lang.String)
at jpetstore.integration.subdao.impl.AccountSubDaoImpl$$EnhancedByS2AOP$$16917ee$$MethodInvocation$$findByUserId1.proceed(MethodInvocationClassGenerator.java)
at org.seasar.framework.aop.impl.NestedMethodInvocation.proceed(NestedMethodInvocation.java:43)
at org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceInterceptor.java:50)
at org.seasar.framework.aop.impl.NestedMethodInvocation.proceed(NestedMethodInvocation.java:41)
at org.seasar.framework.aop.interceptors.InterceptorChain.invoke(InterceptorChain.java:41)
なのでしばらくバージョンを上げるのを控えていたのですが、赤田さんのメールを見てもう一度試行錯誤してみました。
アノテーションでかけてるつもりのアスペクトがかかってないように見えるので、diconファイルの方でもかけてみました。
<component
class="org.seasar.framework.container.autoregister.AspectAutoRegister">
<property name="interceptor">dao.interceptor</property>
<initMethod name="addClassPattern">
<arg>"jpetstore.integration"</arg>
<arg>".*"</arg>
</initMethod>
</component>
そうすると、2.3.1のときのように正常に動作しました。
diconのアスペクト定義をはずすとやっぱりNGです。
というわけで、2.3.1→2.3.2に挙げるときに追加されたInitMethodアノテーションの影響なのではないかと思うのですがいかがでしょうか。
とりあえず当面はdicon定義でしのぐつもりです。
あと、s2-tigerにjarが2つ入っていましたが、2.3.1のjarだけでOKですよね?
Seasar-user メーリングリストの案内