[jboss-dev] jbossas -beans.xml opt
Ales Justin
ales.justin at gmail.com
Thu May 28 16:08:37 EDT 2009
I'm still not convinced that @EnableAOP is the way to go.
The main problem is the boot, not the user code.
I would let the user have all the goodies by default,
and it's up to us to fix the boot properly.
The fix:
* use On_Demand where it makes sense
* analyze our services, add @MCAnnotations, @DisableAOP({DisableType.?})
* federated resources lookup
** usage of AnnotationEnvironment
** fix Metadata's paradigm
*** only asking for what it needs, not checking all against some constraints
** cache other resources, as we're doing the scanning anyway
** limit what we're scanning
*** jboss-scanning.xml
*** (X) jboss-classloading.xml
* usage of (X) will limit the class sharing/lookup == speed up
* profile service loading profiles on demand
** e.g. usage @MDR enterprise bean triggers JMS profile load
* parallel deployment
* xyz ...
Then it's up to the user to follow the pattern. ;-)
Jaikiran Pai wrote:
> Just to see how much improvement this brings in to AS boot time and how
> much efforts it takes to use the @DisableAOP, i tried a few things on
> 5_x branch:
>
> 1) Since the AOPDependencyBuilder is meant for things like @JMX, i just
> searched for the number of files that need this support. In the
> "default" profile we have 10 files (ignore deployers.xml and jmx.xml for
> now):
>
> ./server/default/deploy/remoting-jboss-beans.xml
> ./server/default/deploy/vfs-jboss-beans.xml
> ./server/default/deploy/jca-jboss-beans.xml
> ./server/default/deploy/jbossweb.sar/META-INF/jboss-beans.xml
> ./server/default/deploy/transaction-jboss-beans.xml
> ./server/default/deploy/messaging/messaging-jboss-beans.xml
> ./server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml
>
> ./server/default/conf/bootstrap/deployers.xml
> ./server/default/conf/bootstrap/jmx.xml
> ./server/default/deployers/jsr77-deployers-jboss-beans.xml
>
>
> The "all" profile has a few more (in clustering).
>
> So out of all the MC beans that are being deployed (there are a lot)
> there's only 10 files (and not all MC beans in this file might need @JMX
> support) in the default profile for which the AOPDependencyBuilder
> probably makes sense.
>
> 2) So the next obviously was to add @DisableAOP to rest of all the
> -jboss-beans.xml which don't need the AOPDependencyBuilder. Obviously,
> this is not easy since there are a lot. And as and when we start adding
> new MC beans there's no guarantee that the developer even "remembers" to
> add this @DisableAOP.
>
> 3) I decided to instead patch in a code to use a new annotation
> @EnableAOP which could be used for beans which need the
> AOPDependencyBuilderSupport. So i just have to edit 8 files in the
> default profile. The other advantage of this approach is that when a
> developer is trying to get the @JMX (or some similar) support working
> and if he doesn't get it working then he sure will "remember" to add
> @EnableAOP (on the lines of "configuration by exception").
>
> 4) Edited 8 files to add @EnableAOP at <deployment> level (i could have
> added at a specific MC bean level in that file, but this was just for
> testing).
>
> 5) Updated the jboss-aop-mc-int.jar in %JBOSS_HOME%/lib to use the
> patched code
>
> 6) Booted the server. Here are the numbers with and without changes:
>
> *Without* the AOPDependencyBuilder fix - consistently takes *23 seconds*:
>
> 20:30:10,457 INFO [AbstractServer] Started:
> org.jboss.bootstrap.impl.as.server.JBossASServerImpl at 12b7eea in 23s:177ms
>
> *With* the AOPDependencyBuilder fix using @EnableAOP - consistently
> takes around *21.5 seconds*
>
> So 1.5 seconds improvement with changing around 10 files. 1.5 seconds
> might not sound too big an improvement, but it definitely is an
> improvement.
>
> So the real question is which is the sensible default - at DisableAOP
> (which requires a lot of changes and everyone most of the time needs to
> remember they have to disable this support) or is it @EnableAOP (which
> makes more sense IMO).
>
> regards,
> -Jaikiran
>
>
>
> Brian Stansberry wrote:
>> If not, that re-opens the discussion as to whether @DisableAOP should
>> be required, or should be default behavior with an @EnableAOP. Since
>> AFAICT the thing that made me thing enabling it was required for the
>> common case was @JMX.
>>
>> Ales Justin wrote:
>>> I don't think we need AOPBD for this. Kabir?
>>>
>>> Hmmm, perhaps something like this should be on the @DisableAOP:
>>> @DisableAOP(allow={INSTANTIATE})
>>> which would mean we don't use AOPDB - since the aspect we expect with
>>> this bean don't have any dependencies,
>>> but we do want AOP proxy instantiation, since we *do* expect the bean
>>> to be aspectized.
>>>
>>> Jason T. Greene wrote:
>>>> Ok, so then, why do we need AOPDependencyBuilder to use @JMX? Yes I
>>>> know the dep builder allows for users to add aspects after the fact,
>>>> but this is a near *useless* feature, especially for our core
>>>> components.
>>>>
>>>> Brian Stansberry wrote:
>>>>> The registration of the @JMX handling is in the bootstrap, in
>>>>> bootstrap/jmx.xml.
>>>>>
>>>>> Jason T. Greene wrote:
>>>>>> Ales Justin wrote:
>>>>>>> (2) @org.jboss.aop.microcontainer.annotations.DisableAOP
>>>>>>>
>>>>>>> This one instructs MC to ignore transparent AOP usage when
>>>>>>> handling your bean.
>>>>>>> It will not look for aspect dependencies or try to create an AOP
>>>>>>> proxy.
>>>>>>> It will simply fall back to plain POJO handling.
>>>>>>>
>>>>>>> If you use @JMX or anything similar, this should then *not* be used.
>>>>>>> But for anything else it should be good to use it.
>>>>>>
>>>>>> Can we fix the @JMX (and other known cases) by deploying them
>>>>>> sooner, as part of the bootstrap for example?
>>>>>> _______________________________________________
>>>>>> 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
>>
>>
>
> _______________________________________________
> jboss-development mailing list
> jboss-development at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/jboss-development
>
More information about the jboss-development
mailing list