[jboss-dev] @JMX and @DisableAOP live happily together

Jason T. Greene jason.greene at redhat.com
Mon May 18 14:28:41 EDT 2009


Unsurprisingly I agree :) Even looking at the code it seems the only 
reason this is using AOP is to get a lifecycle callback on install. Why 
can't we just expand the already existing incallback to optionally pass 
a BeanMetaData instance?

David M. Lloyd wrote:
> OK, it seems like I had made a mistake in my test of this.
> 
> But there's really no reason to use AOP for this kind of thing.  AOP is 
> no replacement for proper API design.  In fact it appears that AOP is 
> one of the big contributors to our slow MC startup time [1].  The best 
> way to implement handling of @JMX is with a simple deployment lifecycle 
> listener which gets an instance of the bean and its metadata, and looks 
> for a @JMX annotation.  Why is AOP needed for this trivial problem?
> 
> - DML
> 
> [1] http://www.jboss.org/index.html?module=bb&op=viewtopic&t=155244 
> which is really what this is all about
> 
> On 05/18/2009 12:19 PM, David M. Lloyd wrote:
>> As far as I'm aware, MBeans don't normally have lifecycle methods 
>> outside of the methods on f.e. MBeanRegistration or PersistentMBean or 
>> whatever (in other words, managed by the MBeanServer and not the MC).  
>> If the bean's mbean view is being registered to the MBeanServer, what 
>> else could it be doing that it's not?
>>
>> The idea that @JMX doesn't work with @DisableAOP was (iirc) the 
>> primary argument against having AOP disabled by default, but it seems 
>> to me that this is not true.
>>
>> - DML
>>
>> On 05/18/2009 10:51 AM, Kabir Khan wrote:
>>> Looks like a user error ;-) Or are you saying it actually invokes the 
>>> lifecycle callback in this case?
>>> On 18 May 2009, at 17:40, David M. Lloyd wrote:
>>>
>>>> So why should @DisableAOP be the annotation with enabling AOP being 
>>>> the default?
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>
>>>> <deployment xmlns="urn:jboss:bean-deployer:2.0">
>>>>    <bean name="TestBean" class="javax.management.monitor.GaugeMonitor">
>>>> <annotation>@org.jboss.aop.microcontainer.annotations.DisableAOP()</annotation> 
>>>>
>>>> <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(exposedInterface=javax.management.monitor.GaugeMonitorMBean,name="test:name=Banana",registerDirectly=false)</annotation> 
>>>>
>>>>    </bean>
>>>> </deployment>
>>>>
>>>> - DML
>>>> _______________________________________________
>>>> jboss-development mailing list
>>>> jboss-development at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/jboss-development
>>>
>>> _______________________________________________
>>> jboss-development mailing list
>>> jboss-development at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/jboss-development
>>
> _______________________________________________
> jboss-development mailing list
> jboss-development at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jboss-development


-- 
Jason T. Greene
JBoss, a division of Red Hat



More information about the jboss-development mailing list