Struts2 support build-in Profiling software looks for bottlenecks in program execution. In addition to the profiling services provided by IDEs and standalone profilers, the framework provides its own internal support for profiling.
Profiling aspects
...
...
Activating / Deactivating Profiling
Wiki Markup |
---|
{snippet:id=activationDescription|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Through System property
Using
To enable profiling, first make sure that the profiling
interceptor is applied to your action, like:
...
Then enable profiling using one of the following methods:
Activate Through System property
...
...
Activate Through code
...
...
Filtering profile information
Wiki Markup |
---|
{snippet:id=filteringDescription|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Wiki Markup |
---|
{snippet:id=filteringCode|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Write profiling code
...
Activate Through parameter
...
Changing the activation parameter name
Set the profilingKey
attribute of the profiling
interceptor to the desired name:
...
Profiling activation through a parameter requires struts.devMode
to be true
.
...
Filtering profile information
One could filter out the profile logging by having a System property as follows:
...
With this xwork.profile.mintime
property, one could only log profile information when its execution time exceed those specified in xwork.profile.mintime
system property. If no such property is specified, it will be assumed to be 0, hence all profile information will be logged.
Write profiling code
One could extend the profiling feature provided by Struts2 in their web application as well.
...
Using UtilTimerStack's push and pop
...
Using a UtilTimerStack's ProfileBlock template
...
Profiling Log files
...
Profiled result is logged using commons-logging under the logger named com.opensymphony.xwork2.util.profiling.UtilTimerStack
...
. Depending on the underlying logging implementation, say if it is Log4j, one could direct the log to appear in a different file, being emailed to someone or have it stored in the db.