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