[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