Thanks Tobias !

Very good.

François 








Le 10 mars 2016 à 21:39, Tobias Soloschenko <[email protected]> 
a écrit :

> Hi all,
> 
> I just want to discuss a new module I would like to see in Wicket. It is 
> mentioned in the list of ideas in Confluence for Wicket 8:
> 
> https://cwiki.apache.org/confluence/display/WICKET/Ideas+for+Wicket+8.0
> 
> The Module is going to provide metrics to see how often requests have been 
> handled from a webapp, how many render calls have been processed and other 
> metrics:
> 
> https://github.com/klopfdreh/wicket/tree/wicket_metrics
> 
> I used the framework mentioned in the Confluence article and did a lot of 
> research not to create a big performance and code impact because of changing 
> every class in Wicket Core.
> 
> As you can see in the commits I used AspectJ. To get the Code working for 
> you, you have to do the following steps:
> 
> 1. Fetch the branch https://github.com/klopfdreh/wicket/tree/wicket_metrics
> 
> 2. Just drop the jars of aspectjrt and aspectjweaver into the tomcat 8 lib 
> folder
> http://mvnrepository.com/artifact/org.aspectj/aspectjrt/1.8.8
> http://mvnrepository.com/artifact/org.aspectj/aspectjweaver/1.8.8
> 
> 4. Add the java agent to the jvm start options: 
> -javaagent:/pathToServer/lib/aspectjweaver-1.8.8.jar
> 
> the metrics dependency is shipped with the project
> 
> 5. Add the maven dependency wicket-metrics to your project (and install the 
> snapshot locally before) and write WicketMetrics.startJmxReporter(); in your 
> applications init();
> 
> 6. Do a request to your project
> 
> 7. Open jvisualvm and the tomcat process and have a look at metrics mbeans 
> (mbean plugin has to be installed)
> 
>>>>> So now the reason why I used Aspectj:
> 
> 1. The metrics code does not pull down the performance because of a lot of 
> additional method invocations if not needed
> 
> 2. If the metrics project is not resolved Wicket acts like nothing changed
> 
> 3. Because of aspects also components written by the developers are also 
> measured. So if a component extends Component the render method and the 
> constructor calls are measured (for example). The developer dont have to take 
> care of the statistics (See example)
> 
> 4. It is clearly visible which Aspect is providing metrics about a component 
> and you dont have to dig through the whole Wicket Code to find the 
> measurement implementations
> 
> 5. If there is an error in the statistics they can be turned off easily
> 
> Example class:
> https://github.com/klopfdreh/wicket/blob/wicket_metrics/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ComponentAspect.java
> 
> In my opinion this is the right way to implement it - even if this means to 
> do a little setup before. (jvm-parameter,copy jars)
> 
> Just try it out and let me know what are the results! :-)
> 
> kind regards
> 
> Tobias

Reply via email to