...
Wiki Markup |
---|
{snippet:id=profilingAspect_struts2|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Activating / Deactivating Profiling
Wiki Markup |
---|
{snippet:id=activationDescription|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Using
To enable profiling, first make sure that the profiling
interceptor is applied to your action, like:
Code Block |
---|
|
<action ... >
...
<interceptor-ref name="profiling">
<param name="profilingKey">profiling</param>
</interceptor-ref>
...
</action>
|
Then enable profiling using one of the following methods:
Activate Through System property
Wiki Markup |
---|
{snippet:id=activationThroughSystemProperty|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Wiki Markup |
---|
{snippet:id=activationThroughSystemPropertyDescription|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Activate Through code
Wiki Markup |
---|
{snippet:id=activationThroughCode|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Wiki Markup |
---|
{snippet:id=activationThroughCodeDescription|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Activate Through parameter
Wiki Markup |
---|
{snippet:id=activationThroughParameter|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Wiki Markup |
---|
{snippet:id=activationThroughParameterDescription|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Code Block |
---|
http://host:port/context/namespace/someAction.action?profiling=true
|
Changing the activation parameter name
Set the profilingKey
attribute of the profiling
interceptor to the desired name:
Code Block |
---|
|
<action ... >
...
<interceptor-ref name="profiling">
<param name="profilingKey">profiling</param>
</interceptor-ref>
...
</action>
|
Warning |
---|
Profiling activation through a parameter requires struts.devMode to be true . |
Warning |
---|
Wiki Markup | {snippet:id=activationThroughParameterWarning|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Filtering profile information
...
Wiki Markup |
---|
{snippet:id=filteringCode|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Write profiling code
...
One could extend the profiling feature provided by Struts2 in their web application as well.
Using UtilTimerStack's push and pop
Code Block |
---|
|
String logMessage = "Log message";
UtilTimerStack.push(logMessage);
try {
// do some code
} finally {
UtilTimerStack.pop(logMessage); // this needs to be the same text as above
}
|
Wiki Markup |
---|
{snippet:id=method1|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Using a UtilTimerStack's ProfileBlock template
Wiki Markup |
---|
{snippet:id=method2|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack} |
Profiling Log files
...
Code Block |
---|
|
String result = UtilTimerStack.profile("purchaseItem: ",
new UtilTimerStack.ProfilingBlock<String>() {
public String doProfiling() {
// do some code
return "Ok";
}
});
|
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.