| |
| This is a little example how to setup wicket-metrics within a Apache Tomcat. |
| |
| (1) Add the maven dependency to your project |
| [source,java] |
| ---- |
| <dependency> |
| <groupId>org.apache.wicket.experimental.wicket8</groupId> |
| <artifactId>wicket-metrics</artifactId> |
| <version>0.X-SNAPSHOT</version> |
| </dependency> |
| ---- |
| |
| (2) Just drop the jars of aspectjrt and aspectjweaver into the tomcat lib folder - you can download it from here http://mvnrepository.com/artifact/org.aspectj/[http://mvnrepository.com/artifact/org.aspectj/] (the metrics dependency is shipped with the project) |
| |
| (3) Add the java agent to the jvm start options of your tomcat: -javaagent:/pathToServer/lib/aspectjweaver-x.x.x.jar |
| |
| (4) Add an aop.xml to your project's META-INF folder at the root of your classpath with the metrics you want to use (aspect tags) - if you don't want to enable a metrics just remove the aspect tag: |
| [source,java] |
| ---- |
| <!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd"> |
| <aspectj> |
| <weaver options="-nowarn"> |
| <include within="org.apache.wicket..*"/> |
| </weaver> |
| <aspects> |
| <!-- required --> |
| <aspect name="org.apache.wicket.metrics.aspects.WicketFilterInitAspect" /> |
| |
| <!-- optional --> |
| <aspect name="org.apache.wicket.metrics.aspects.model.LoadableDetachableModelLoadAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.requesthandler.IRequestHandlerDetachAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.requesthandler.IRequestHandlerRespondAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.resource.IResourceCreateAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.behavior.BehaviorCreateAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.component.ComponentCreateAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.component.ComponentOnConfigureAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.component.ComponentOnDetachAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.component.ComponentOnInitializeAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.component.ComponentOnRenderAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.component.ComponentSetResponsePageAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.ajax.IPartialPageRequestHandlerAddAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.ajax.IPartialPageRequestHandlerAppendJavaScriptAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.ajax.IPartialPageRequestHandlerPrependJavaScriptAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.resource.ResourceReferenceCreateAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.markup.WicketTagCreateAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.request.WicketFilterRequestCycleUrlAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.request.WicketFilterRequestCycleAspect" /> |
| <aspect name="org.apache.wicket.metrics.aspects.session.SessionCountListenerAspect" /> |
| </aspects> |
| </aspectj> |
| ---- |
| |
| * If you use the SessionCountListenerAspect you have to ensure that metadata-complete= [false] is set otherwise you have to add the listener yourself: |
| [source,java] |
| ---- |
| <listener> |
| <listener-class> |
| org.apache.wicket.metrics.aspects.session.SessionCountListener |
| </listener-class> |
| </listener> |
| ---- |
| |
| (5 - optional) To enable the JMX measurement write the following line into your init method of your Application (Now you are able to connect with jvisualvm to your server and have a look at the data): |
| [source,java] |
| ---- |
| WicketMetrics.getSettings().startJmxReporter(); |
| ---- |
| |
| To deactivate: |
| [source,java] |
| ---- |
| WicketMetrics.getSettings().stopJmxReporter(); |
| ---- |
| |
| To disable measurement: |
| [source,java] |
| ---- |
| WicketMetrics.getSettings().setEnabled(false); |
| ---- |
| |
| WARNING: *IMPORTANT INFORMATION* |
| It is only possible to collect metrics for *one wicket filter per webapp* - don't declare more then one if you want to use wicket-metrics |
| The WicketFilterInitAspect is required so that the application can be resolved - otherwise runtime exceptions will be thrown |
| If you use the SessionCountListener you have to clear the session store if you restart the server - otherwise physically stored session will corrupt the data, because the count is initialized with 0. |
| If you have set wicket-metrics as dependency you can open _wicket-metrics.template.xml_ to get a full template of the _aop.xml_. For the weaver options refer to the AspectJ LTW configuration documentation: https://eclipse.org/aspectj/doc/next/devguide/ltw-configuration.html |