Re: Re: classloader issue

?? 娑???濡? <[email protected]> Wed, 23 Apr 2003 21:14:15 +0000
Newsgroups gmane.comp.java.aspectwerkz
Message-ID <[email protected]>
Hi Pam:
In order to modify bytecode dynamicly,Javassist seems must use customer 
classloader .
If we use classloader mechanism provided by application server vendor 
,JavaAssist should be sufficient.So AOP Framework for WebLogic would be OK 
and AOP Framework for JBOSS would be OK.
But for a general purpose AOP framework, How can JavaAssist customer 
classloader(provided by AOP framework) deal with other customer classloader 
provided by app server(and other applications which provide their own 
classloader)?
Regards
Shiyiying



>From: "Pam" <[email protected]>
>To: [email protected]
>Subject: [aspectwerkz-developer] Re: classloader issue
>Date: Wed, 23 Apr 2003 22:04:12 +0200
>
>Great Jonas,
>
>I will test AspectWerkz for the needs I describe very soon and will give 
you
>my feedback. Just to be clear on what I have in mind, I am trying to play
>with class intrumentation at load time in app server. If I succeed in 
that,
>I might succeed in class instrumentation at load time in any (almost any)
>J2SE app.
>
>I have already a embrionic project on sourceforge which is more an alpha
>stage of what I am trying to do for weblogic using the BEA 
classPreProcessor
>hook described by Bob Lee, author of the JAdvise AOP lightweight 
framework.
>This is not AOP (not yet). http://besee.sourceforge.net/
>
>The classPreProcessor hook allows for ANY class you provide to plug in the
>weblogic class loading mechanism to insturment bytecode at load time in 
the
>whole class loader hierarchy of deployed applications (ear, war...).
>My embrionic stuff uses Javassist (something "like" BCEL to say it 
shortly),
>which has been a research project for years and is now part of JBoss 4
>official thrid parties, used in JBoss AOP.
>By the way you should have a look how the field interception is made in
>javassist reflection module - very elegant. Seems that JBoss teams 
chooosed
>something similar.
>
>What I like in aspectWerkz is the deployment model (perThread ...) and the
>elegant xml stuff. It seems easier to integrate than JBoss AOP stuff. I
>don't like the BCEL complexity and the JMangler layer - too heavy. JAdvise
>is too light to integrate. Yours seems almost complete, or on the right 
way
>!
>
>What I am trying to have is a AOP framework plugged into weblogic. I would
>also like to have aspect xml descriptor whether at server level or at
>application level (in ear or ejb-jar or war), like a web.xml file 
(embrionic
>idea). I am targetting weblogic just because I am working everyday with 
it,
>but I would like a framework easyly pluggable in a class loading scheme
>supporting class pre processing hook.
>I would then like to implement aspect for JMX monitoring off some 
component
>response time, log4j or similar monitoring of the call flow to easily 
detect
>slow portions in dev/integration mode, asynchronous/timeout wrapping of 
some
>third parties calls, limited cache feature, live sequence diagram for fun
>(see Bob Lee weblog). I am not targetting aspect for TX management or
>persistence mapping - too low level, already covered in app servers.
>
>So here is my short term workplan :
>- let the ideas florish as you said...
>- give a concrete try to weblogic wrapped in aspectWerkz with JMangler
>loader
>- keep an eye on JBoss implementation since they are now hosting 
Javassist,
>and they are moving fast
>- try to figure if I can make aspectwerkz instrumentation using Javassist 
-
>interesting challenge isn't it ?
>
>Anyway I definetly like your aspectWerkz vision.
>More feedback soon.
>
>Alex
>
>
>
>"Jonas Bonr" <[email protected]> wrote in message
>news:[email protected]...
> > Hi Alex.
> >
> > You are right about the the loading of the methods at startup time. It
> > is a bad idea.
> >
> > I have re-implemented the getMethod(..) method to use lazy loading
> > instead. Now it retrieves the methods and builds a repository based on
> > the class that it gets from the actual target object. Which is then
> > already loaded. So this should be on the safe side. (not commited yet
> > thought)
> >
> > I think that your ideas are really interesting. I havn't had the time 
to
> > think through all the scenarios when it comes to running the weaver
> > dynamically in an app server. (But I guess that the post processed code
> > would work without any major quirks.)
> >
> > If you have any suggestions how to implement stuff like you are talking
> > about in a good way, they are more than welcome.
> >
> > Best regards.
> > Jonas.
> >
> >
> >
> > Pam wrote:
> > > Hi
> > >
> > > I am inspecting how AspectWerkz is done in its internal and I am 
quite
> > > surprised with a portion of code. I am trying to keep in mind that I
>want
> > > the AOP framework works within an app server ie with hierarchical 
class
> > > loaders.
> > >
> > > While lurking at AspectWerkz.initialize() which calls
> > > AspectWerkz.loadMethods() (in 0.4 src) I understood that the XML
>definition
> > > is loaded, Aspects are registered and the target classes are 
immediately
> > > loaded to create a method repository and some other internal stuff. 
The
> > > following code in loadMethods gives some tips :
> > >
> > >         for (Iterator it = advisedClassNames.iterator(); 
it.hasNext();
>i++)
> > > {
> > >             try {
> > >                  advisedClasses[i] = Thread.currentThread().
> > >
> > > getContextClassLoader().loadClass((String)it.next());
> > >             }
> > >             catch (ClassNotFoundException e) {
> > >                 throw new WrappedRuntimeException(e);
> > >             }
> > >
> > > I am wondering why you are agressively trying to load aspected class
>with
> > > aspects. I am pretty sure (at least as I understood the sources) that 
if
>I
> > > plug aspectWerkz in a servlet container (eg), the aspected struts 
Action
> > > class (eg) will have to be on the server classpath and not only in 
the
> > > web-inf/lib of my deployed sample.war (eg).
> > >
> > > I assume this is not a JMangler issue since JMangler affects the java
>system
> > > classLoader to plug in it, so it will indeed affect the classloader
> > > hierarchy (we already talk a bit about that thru some emails - I have 
to
> > > check JMangler details about this).
> > >
> > > Jonas, may be you have some tips or design reason behind this. Any 
way,
>I
> > > think thinking a AOP framework with app server class loading scheme 
in
>mind
> > > complicates the whole so I hope the subject is interesting (think 
about
> > > having struts deployed in two web-app, with two different struts 
version
>you
> > > want to advise differently. If its based on the class full qualified
>name it
> > > will break, but If I want it to be based on some others things I have 
to
> > > deploy my aspects at each level : webapp and system class loader 
because
>the
> > > XML descriptor is not enough., and when you reached the deployment
>stage,
> > > you have to handle redeploy / undeploy without having memory leaks in
>aspect
> > > / advices / point-cuts repositories).
> > >
> > > Any way I will defnitely give a try soon to all those points.
> > >
> > > Alex
> > >
> > >
> > >
> > >
> > >
> > >
> > > -------------------------------------------------------
> > > This sf.net email is sponsored by:ThinkGeek
> > > Welcome to geek heaven.
> > > http://thinkgeek.com/sf
> > > _______________________________________________
> > > aspectwerkz-developer mailing list
> > > [email protected]
> > > https://lists.sourceforge.net/lists/listinfo/aspectwerkz-developer
> > >
> > >
> >
> >
> > --
> > Jonas
> > http://freeroller.net/page/jboner
> >
> >
> >
> >
> >
> > -------------------------------------------------------
> > This sf.net email is sponsored by:ThinkGeek
> > Welcome to geek heaven.
> > http://thinkgeek.com/sf
>
>
>
>
>
>-------------------------------------------------------
>This sf.net email is sponsored by:ThinkGeek
>Welcome to geek heaven.
>http://thinkgeek.com/sf
>_______________________________________________
>aspectwerkz-developer mailing list
>[email protected]
>https://lists.sourceforge.net/lists/listinfo/aspectwerkz-developer


_________________________________________________________________
与联机的朋友进行交流,请使用 MSN Messenger:  http://messenger.msn.com/cn  



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf