-
1. Re: JBossCache 2.1.0 - AOP framework
julien1 Jul 6, 2007 7:47 AM (in response to manik)You want also to be sure that JBoss AOP offers a public API that will not change over time.
-
2. Re: JBossCache 2.1.0 - AOP framework
adrian.brock Jul 6, 2007 8:45 AM (in response to manik)Of course you should use JBoss AOP. I can think of a number of reaons,
but probably the most compelling for you (and me but more importantly users :-) are:
1) If you have problems it is relatively trivial to get a fix/resolution in a "one stop shop"
at jboss.org
2) A user doesn't need to understand two sets of configuration to configure JBoss Cache
with other JBoss AOP usage in the same application (e.g. JBoss AS)
3) It's possible to use JBoss AOP without any "weaving" (either compile time
or load time) with the JBoss AOP proxy
e.g. the JCA prototype does exactly what you are doing (implement a project
using AOP for the design) but adds the AOP "on the fly" without any special help
from the classloading.
4) JBoss AOP works. Its unlikely that your own handwritten framework
has had the same amount of exposure to testing. It almost certainly contains more
bugs. :-)
5) Aspects written for other projects are usuable in your project (and vice versa)
6) There are some interesting features in the JBoss AOP/MC integration
that are not available anywhere else. One trivial example is the
"bind my object into JMX".@JMX public class CacheImpl {}
Whether it actually does bind it into JMX is dependent not upon you
writing code to do this, but adding the aspect to the aop config to say
what the annotation @JMX means.
No such aspect means there is no binding, and you can choose
what the implementation of the aspect is according the environment.
But there are other more interesting examples, such as proper
dependency management of aspects applied to a bean, e.g.@Tx(TxAttribute.REQUIRED) public class MyClass {}
But @Tx introduces the transaction demaraction aspect
which has a dependency on the transaction manager@Aspect public class TransactionDemarcation { @Inject public void setTransactionManager(TransactionManager tm) {} public Object invoke(Invocation) throws Throwable {} }
Only with JBoss AOP/MC does this transient dependency get recognised
and properly resolved, i.e. MyClass won't be installed until
TransactionDemarcation is installed which in turn requires the TransactionManager
installed. -
3. Re: JBossCache 2.1.0 - AOP framework
bill.burke Jul 6, 2007 10:28 AM (in response to manik)downsides to JBoss AOP:
* sometimes difficult to diagnose problems as not much work has been put into the pointcut interpreter.
* Runtime is 1M JBoss AOP + Javassist. -
4. Re: JBossCache 2.1.0 - AOP framework
manik Jul 18, 2007 5:36 AM (in response to manik)After Kabir's AOP/MC integration presentation yesterday I'm somewhat more convinced of this approach, but a few things still do concern me:
1) JAR dependency explosion
2) Memory/performance footprint
How do other projects deal with the above? Do they just "live with it"? Can 1) be mitigated based on a limited use case such as mine?
Regarding 2), how does this compare with competing frameworks? -
5. Re: JBossCache 2.1.0 - AOP framework
kabirkhan Jul 18, 2007 8:15 AM (in response to manik)Don't you need the AOP jars for POJO Cache anyway? Or are you doing separate downloads for POJO and Plain Cache?
4) Allow for end users to add their own aspects (*)
(*) This may not be a good thing.
I have some vague ideas for a "locked" configuration of aspects for particular joinpoints -
6. Re: JBossCache 2.1.0 - AOP framework
manik Jul 18, 2007 8:32 AM (in response to manik)Separate binary distros.