[jboss-dev-forums] [Design of AOP on JBoss (Aspects/JBoss)] - Unexpected behaviour in PER_CLASS_JOINPOINT aspect factories

jaikiran do-not-reply at jboss.com
Tue May 5 13:09:57 EDT 2009


Currently in EJB3, we have this declaration for an AspectFactory:


  | <interceptor factory="org.jboss.ejb3.tx.CMTTxInterceptorFactory" scope="PER_CLASS_JOINPOINT"/>
  | 
  | ...
  | 
  | <domain name="Stateless Bean" extends="Intercepted Bean" inheritBindings="true">
  | ...
  |       <bind pointcut="execution(public * *->*(..))">
  |    ...
  |          <interceptor-ref name="org.jboss.ejb3.tx.CMTTxInterceptorFactory"/>
  | 
  | 

Complete file is here http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/trunk/core/src/main/resources/ejb3-interceptors-aop.xml

Based on this declaration, i would have expected that the CMTTxInterceptorFactory would be created one per class join point. However, currently (in AS 5_x branch) we are seeing that this factory (and other factories marked for PER_CLASS_JOINPOINT) is being created for every method join point on which the expression is applied. Here's the appropriate call trace which instantiates this factory for each method join point:


  | 	at org.jboss.ejb3.tx.CMTTxInterceptorFactory.<init>(CMTTxInterceptorFactory.java:53)
  | 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  | 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
  | 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
  | 	at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
  | 	at org.jboss.reflect.plugins.introspection.ReflectionUtils.newInstance(ReflectionUtils.java:149)
  | 	at org.jboss.reflect.plugins.introspection.ReflectConstructorInfoImpl.newInstance(ReflectConstructorInfoImpl.java:106)
  | 	at org.jboss.joinpoint.plugins.BasicConstructorJoinPoint.dispatch(BasicConstructorJoinPoint.java:80)
  | 	at org.jboss.beans.metadata.plugins.factory.GenericBeanFactory.createBean(GenericBeanFactory.java:212)
  | 	at org.jboss.beans.metadata.plugins.factory.GenericBeanFactory.createBean(GenericBeanFactory.java:81)
  | 	at org.jboss.aop.microcontainer.beans.ClassLoaderAwareGenericBeanFactory.createBean(ClassLoaderAwareGenericBeanFactory.java:66)
  | 	at org.jboss.aop.microcontainer.beans.DelegatingBeanAspectFactory.doCreate(DelegatingBeanAspectFactory.java:132)
  | 	at org.jboss.aop.microcontainer.beans.DelegatingBeanAspectFactory.createPerJoinpoint(DelegatingBeanAspectFactory.java:105)
  | 	at org.jboss.aop.advice.ScopedInterceptorFactory.create(ScopedInterceptorFactory.java:116)
  | 	at org.jboss.aop.Advisor.createInterceptorChain(Advisor.java:1318)
  | 	at org.jboss.ejb3.interceptors.container.ManagedObjectAdvisor.createInterceptorChain(ManagedObjectAdvisor.java:141)
  | 	at org.jboss.aop.Advisor.pointcutResolved(Advisor.java:1932)
  | 	at org.jboss.aop.MethodMatchInfo.applyBinding(MethodMatchInfo.java:152)
  | 	at org.jboss.aop.MethodMatchInfo.overridePopulateBindings(MethodMatchInfo.java:143)
  | 	at org.jboss.aop.MethodMatchInfo.populateBindings(MethodMatchInfo.java:92)
  | 	at org.jboss.aop.Advisor.finalizeMethodChain(Advisor.java:1543)
  | 	at org.jboss.aop.ClassAdvisor.finalizeChains(ClassAdvisor.java:739)
  | 	at org.jboss.aop.ClassAdvisor.createInterceptorChains(ClassAdvisor.java:607)
  | 

Any reason why this is happening? And any workarounds?



View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4228721#4228721

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4228721



More information about the jboss-dev-forums mailing list