Re: [aspectwerkz-user] Speeding up roundtrip
Mattias Jiderhamn <[email protected]> Tue, 21 Jun 2005 13:44:31 +0200
| Newsgroups | gmane.comp.java.aspectwerkz.user |
|---|---|
| Message-ID | <[email protected]> |
At 2005-06-21 13:03, you wrote:
>You perhaps need to see how the matching is done using
>-Daspectwerkz.transform.details=true
>That may help to narrow call side (call/get/set) pointcuts f.e. One
>such pointcut can indeed sometime lead to parsing everry single
>bytecode instruction.
We only have execution() pointcuts.
>Aside you may use include/exclude element in your aop.xm if you know
>that some files will not be weaved at all.
We have made sure only to weave the ordinary
classes, not the JSP classes, but there are pointcuts in lots of the classes.
I don't think there is much room for optimizing
the pointcuts. But I will post the aop.xml below
to see if anybody has suggestions.
>AspectWerkzC does not support writing to a different location.
Could this be added?
>On the other hand you may be able to implement a wrapper that checks
>for .class file timestamps to compile only modified files (then keep
>track of the lastRun timestamp in some per project file)
Only this wrapper, without writing to a different
location wouldn't helpt that much, since I would
then have to copy all the files before weaving, or the compilation won't work.
If the original .class was not overwritten, I
wouldn't need a timestamp file, but only compare
the timestamp of weaved .class with the original.
--------- aop.xml ---------------
<aspectwerkz>
<system id="exder">
<aspect class="se.exder.system.persistence.JTAAspect">
<advice name="txByType" type="around"
bind-to="execution(@se.exder.system.persistence.Tx * se.exder..*.*(..))" />
<pointcut name="objectModification">
( execution(* se.exder.system.EntityObject+.update*(..))
OR execution(* se.exder.system.EntityObject+.delete*(..))
OR execution(* se.exder.system.EntityObject+.insert*(..)) )
AND !within(se.exder.logic.edi.GeneratedEdiLogObject+)
</pointcut>
<advice name="txMandatory" type="around"
bind-to="objectModification" />
</aspect>
</system>
</aspectwerkz>
>On 6/21/05, Mattias Jiderhamn <[email protected]> wrote:
> > Our application is big enough to require a few
> > minutes of offline weaving on my machine, so we
> > use online weaving in development. On the other
> > hand, reloading the application in the web
> > container using online weaving isn't much better
> > (say ½-1 minute). This makes developing very
> > slow, since the code-compile-test cycle has a lot of weaving overhead.
> >
> > Is there any better way to do this? Can I have
> > AspectWerkz weave only modified classes offline?
> > If I weave the whole project and then try to
> > compile in my IDE (IntelliJ), I get compiler
> > errors. Could I make AspectWerkzC output the
> > weaved files in a different directory, so that I
> > can compile from the IDE and then have
> > AspectWerkz weave the modified classes only?
> >
> > Thanks in advance,
> > Mattias Jiderhamn
> >
> >