Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Interesting Problem & Reweavable

I second Ron and Nick.

Seems like there is already a bug to fix this issue:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=91417

For an additional use case, see:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=36430

-Ramnivas

Lesiecki Nicholas wrote:
I agree that reweavable should be the default to enable precisely the
situation Ron describes.

Cheers,
Nick
--- Ron Bodkin <rbodkin@xxxxxxxxxxxxxx> wrote:
  
Hi All,
 
I've been working on applying the AspectJ 5 load-time weaving support
from
the branch that Alex and Jonas have been working on, to let me weave some
monitoring code into an app server at load time. The code is still fairly
new, but I was able to get it working for my environment, which was great
(already much better than trying to weave into a wad of 3rd party jars at
build time!). Great work guys! I plan to blog about this and to submit a
few
small suggestions to bugzilla and aspectj-dev.
 
However, I ran into the following output when I was weaving into the
MySQL
JDBC driver's debug version:

error at com\mysql\jdbc\NonRegisteringDriver.java::0 class
'com.mysql.jdbc.NonRegisteringDriver' is already woven and has not been
built with -Xreweavable

That's right. This error means that the code was already woven with
AspectJ!
The MYSQL debug JDBC driver includes a tracing aspect: it's great to see
this kind of increased use & popularity of AspectJ. For the curious, you
can
see the source code for this aspect in the source distribution of the
Mysql
Connector/J. In this case, the normal, non-debug, library doesn't use
AspectJ so it's not a major problem.(*)
 
Unfortunately, because the default today is to not emit reweavable
bytecode,
it makes it challenging to weave into libraries like this. I think the
increasing amount of AspectJ use in libraries makes it's more important
than
ever to make -Xreweavable the default option (or the compressed version).
Indeed, under what circumstances would we not want code to be reweavable?
Is
the performance that much better? It seems to me that maybe reweavable
should just always be the case.

Failing that, I would like to see an option to weave into previously
non-reweavable woven code at a bytecode-level, which would just treat the
woven result like one would treat any Java bytecode (i.e., it wouldn't
recognize adviceexecution, nor understand ITD's, etc., it would operate
on
the "machine-level" translation into Java bytecode).
 
Ron

Ron Bodkin
Chief Technology Officer
New Aspects of Software
w: (415) 824-4690
 
(*) Amusingly, I only discovered this because I had an error in the first
zip distribution I downloaded so I could only extract the debug jar file.



_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users

    
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users

  

Back to the top