Another problem when attempting to run the scoped aop tests is that both deployments try
to install an interceptor with the same name.
| Caused by: java.lang.IllegalStateException:
Factory$org.jboss.test.aop.scoped.ScopedInterceptor is already installed.
| at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:577)
| at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:443)
| at
org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:88)
|
Once I have got the domains set up this should be fine at the aop level, but I need to
resolve this somehow on the MC level. The following "nice" xml
| <aop xmlns="urn:jboss:aop-beans:1.0">
| <interceptor class="org.jboss.test.aop.scoped.ScopedInterceptor"
scope="PER_INSTANCE"/>
| <bind pointcut="all(org.jboss.test.aop.scoped.POJO)">
| <interceptor-ref
name="org.jboss.test.aop.scoped.ScopedInterceptor"/>
| </bind>
|
will resolve to something along the lines of
| <!-- The following 2 are the interceptor definition -->
| <beanfactory
name="Factory$org.jboss.test.aop.scoped.ScopedInterceptor"
class="org.jboss.test.aop.scoped.ScopedInterceptor"/>
|
| <!-- BY DEFAULT THE INTERCEPTOR TAKES THE NAME OF THE CLASS-->
| <bean name="org.jboss.test.aop.scoped.ScopedInterceptor"
class="org.jboss.aop.microcontainer.beans.Aspect">
| <property name="advice"><inject
bean="Factory$org.jboss.test.aop.scoped.ScopedInterceptor"/></property>
| <property name="manager"><inject
bean="AspectManager" property="manager"/></property>
| </bean>
|
| <!-- The following 2 are the binding and interceptor-ref entries -->
| <bean name="TestAspectBinding"
class="org.jboss.aop.microcontainer.beans.AspectBinding">
| <property name="pointcut">execution(*
org.jboss.test.microcontainer.beans.POJO->*(..))</property>
| <property name="manager"><inject
bean="AspectManager" property="manager"/></property>
| <property name="advices">
| <list>
| <inject bean="TestAspectBinding$1"/>
| </list>
| </property>
| </bean>
|
| <bean name="TestAspectBinding$1"
class="org.jboss.aop.microcontainer.beans.InterceptorEntry">
| <property name="manager"><inject
bean="AspectManager" property="manager"/></property>
| <!-- THIS IS THE NAME OF THE INTERCEPTOR -->
| <property name="aspect"><inject
bean="org.jboss.test.aop.scoped.ScopedInterceptor"/></property>
| <property name="binding"><inject
bean="TestAspectBinding" state="Instantiated"/></property>
| </bean>
|
I could give each deployment it's own prefix or something for the names used, but that
will cause problems if the interceptor is declared in one -aop.xml and used in another.
One option might be to maintain my own registry in the AOP BeanMetaDataFactory layer, but
I don't see how this will work for scoped deployments, since the BMDF is ignorant of
scoping at parsing time?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4154037#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...