On 23 Dec 2009, at 20:31, Ales Justin wrote:
I could also volunteer to work on removing AOP
dependencies that currently exist for some components.
With your AOP background, I think you would be a perfect fit to do this.
I don't think we actually use any direct AOP proxying.
We mostly "abuse" AOP for lifecycle callbacks.
e.g. @JMX or @JNDI usage
I think you're right, a quick look at AS trunk shows the main bindings to come from messaging (which I assume is compile-time woven?), ejb 3 (which uses the domains to construct the containers), and this in bootstrap/aop.xml:
<bean name="AspectManager" class="org.jboss.aop.deployers.AspectManagerJDK5">
<constructor>
<parameter><![CDATA[
<aop>
<aspect name="mainDeployer" class="org.jboss.profileservice.aop.MainDeployerAspect"/>
<bind pointcut="execution(* $instanceof{org.jboss.deployers.spi.deployment.MainDeployer}->process(..))">
<advice name="process" aspect="mainDeployer"/>
</bind>
<aspect name="persist" class="org.jboss.profileservice.aop.PersistAspect"/>
<bind pointcut="execution(* $instanceof{org.jboss.managed.api.ManagedProperty}->setValue(..))">
<advice name="setValue" aspect="persist"/>
</bind>
</aop>]]>
</parameter>
</constructor>
I think Scott can shed some light on these aspects, but IIRC proxies for these are created by explicitly calling AOPProxyFactory since what is intercepted is not installed as MC beans.