Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Performancemonitoring aspect

Well..
The problem here would be that this Apsect as coded below would be a
singletong, therefore i woul end up having each call to
updateCustomer() changing the start timestamp, and each call to the
dao change the end.
So i would en up that the starttime would be the start of the last
executed updateCustomerCall(), and the end time be the last finished
dao call and that may not be the dao update for the updateCustomer()
call who owns the starttime.

So.
I would need to add a static hashmap or something of the timer handle
(am going to use jamon btw) so that i on the dao call could do a
map.get().stop(), but then again what would the key for that map be..
lets say both the methodscalls have no params, and i cannot get the
customer id or things like that.

On 03/02/06, Conway. Fintan (IT Solutions) <Fintan.Conway@xxxxxx> wrote:
> How about :
>
> @Aspect
> MyAspect{
>     private long start;
>     private long end;
>     private long duration;
>
>     @Before("call (* Customer.updateCustomer(..)"
>     public startTimer(){
>         start = System.getCurrentTimeMillis();
>     }
>
>     @After("call (* CustomerDao.save(..)"
>     public stopTimer(){
>         end = System.getCurrentTimeMillis();
>         duration = end - start;
>           log("Time to save Customer :  " + duration);
>     }
> }
>
> HTH,
>
> Fintan
>
> -----Original Message-----
> From: aspectj-users-bounces@xxxxxxxxxxx
> [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of Kaare Nilsen
> Sent: 03 February 2006 10:49
> To: aspectj-users@xxxxxxxxxxx
> Subject: [aspectj-users] Performancemonitoring aspect
>
>
> Hi.
>
> i was just wandering if there could be a clever way of making an aspect
> that could figure out the duration in time from a call in one class to a
> later call in another class ?
>
> To elaborate a little.
> Let say we have a class called Customer who has a method,
> updateCustomer() And then we have a class CustomerDao with a method
> save() In addition we have a unspecified number of logical application
> layers, doing alot of things as a part of this process, some of them
> e.g. checking the given adress on a central adress register and so on.
>
> So what i would like to is to start a timer when someone calls
> updateCustomer(), then let the applicationflow go about it's ususal
> tasks, some of them asynchroniously and some not, until we get to the
> point that the dao is finished with the persisting in the database, then
> i would like to stop the timer handle and log the result. Ideas anyone ?
>
> @Aspect
> MyAspect{
>     private Timer timer = new Timer();
>
>     @Before("call (* Customer.updateCustomer(..)"
>     public startTimer(){
>         timer.start();
>     }
>
>     @After("call (* CustomerDao.save(..)"
>     public stopTimer(){
>         timer.stop();
>         timer.log();
>     }
> }
>
>
> Best regards
> Kaare Nilsen
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>
> * ** *** ** * ** *** ** * ** *** ** *
> This email and any files transmitted with it are confidential and
> intended solely for the use of the individual or entity to whom they
> are addressed.
> Any views or opinions presented are solely those of the author, and do not necessarily
> represent those of ESB.
> If you have received this email in error please notify the sender.
>
> Although ESB scans e-mail and attachments for viruses, it does not guarantee
> that either are virus-free and accepts no liability for any damage sustained
> as a result of viruses.
>
> * ** *** ** * ** *** ** * ** *** ** *
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top