org.springframework.aop.interceptor
Class JamonPerformanceMonitorInterceptor

java.lang.Object
  extended by org.springframework.aop.interceptor.AbstractTraceInterceptor
      extended by org.springframework.aop.interceptor.AbstractMonitoringInterceptor
          extended by org.springframework.aop.interceptor.JamonPerformanceMonitorInterceptor
All Implemented Interfaces:
Serializable, Advice, Interceptor, MethodInterceptor

public class JamonPerformanceMonitorInterceptor
extends AbstractMonitoringInterceptor

Performance monitor interceptor that uses JAMon library to perform the performance measurement on the intercepted method and output the stats.

This code is inspired by Thierry Templier's blog.

Since:
1.1.3
Author:
Dmitriy Kopylenko, Juergen Hoeller, Rob Harrop
See Also:
MonitorFactory, PerformanceMonitorInterceptor, Serialized Form

Field Summary
 
Fields inherited from class org.springframework.aop.interceptor.AbstractTraceInterceptor
defaultLogger
 
Constructor Summary
JamonPerformanceMonitorInterceptor()
          Create a new JamonPerformanceMonitorInterceptor with a static logger.
JamonPerformanceMonitorInterceptor(boolean useDynamicLogger)
          Create a new JamonPerformanceMonitorInterceptor with a dynamic or static logger, according to the given flag.
JamonPerformanceMonitorInterceptor(boolean useDynamicLogger, boolean trackAllInvocations)
          Create a new JamonPerformanceMonitorInterceptor with a dynamic or static logger, according to the given flag.
 
Method Summary
protected  Object invokeUnderTrace(MethodInvocation invocation, Log logger)
          Wraps the invocation with a JAMon Monitor and writes the current performance statistics to the log (if enabled).
protected  boolean isInterceptorEnabled(MethodInvocation invocation, Log logger)
          Always applies the interceptor if the "trackAllInvocations" flag has been set; else just kicks in if the log is enabled.
 void setTrackAllInvocations(boolean trackAllInvocations)
          Set whether to track all invocations that go through this interceptor, or just invocations with trace logging enabled.
 
Methods inherited from class org.springframework.aop.interceptor.AbstractMonitoringInterceptor
createInvocationTraceName, getPrefix, getSuffix, setLogTargetClassInvocation, setPrefix, setSuffix
 
Methods inherited from class org.springframework.aop.interceptor.AbstractTraceInterceptor
getClassForLogging, getLoggerForInvocation, invoke, isLogEnabled, setHideProxyClassNames, setLoggerName, setUseDynamicLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JamonPerformanceMonitorInterceptor

public JamonPerformanceMonitorInterceptor()
Create a new JamonPerformanceMonitorInterceptor with a static logger.


JamonPerformanceMonitorInterceptor

public JamonPerformanceMonitorInterceptor(boolean useDynamicLogger)
Create a new JamonPerformanceMonitorInterceptor with a dynamic or static logger, according to the given flag.

Parameters:
useDynamicLogger - whether to use a dynamic logger or a static logger
See Also:
AbstractTraceInterceptor.setUseDynamicLogger(boolean)

JamonPerformanceMonitorInterceptor

public JamonPerformanceMonitorInterceptor(boolean useDynamicLogger,
                                          boolean trackAllInvocations)
Create a new JamonPerformanceMonitorInterceptor with a dynamic or static logger, according to the given flag.

Parameters:
useDynamicLogger - whether to use a dynamic logger or a static logger
trackAllInvocations - whether to track all invocations that go through this interceptor, or just invocations with trace logging enabled
See Also:
AbstractTraceInterceptor.setUseDynamicLogger(boolean)
Method Detail

setTrackAllInvocations

public void setTrackAllInvocations(boolean trackAllInvocations)
Set whether to track all invocations that go through this interceptor, or just invocations with trace logging enabled.

Default is "false": Only invocations with trace logging enabled will be monitored. Specify "true" to let JAMon track all invocations, gathering statistics even when trace logging is disabled.


isInterceptorEnabled

protected boolean isInterceptorEnabled(MethodInvocation invocation,
                                       Log logger)
Always applies the interceptor if the "trackAllInvocations" flag has been set; else just kicks in if the log is enabled.

Overrides:
isInterceptorEnabled in class AbstractTraceInterceptor
Parameters:
invocation - the MethodInvocation being traced
logger - the Log instance to check
See Also:
setTrackAllInvocations(boolean), AbstractTraceInterceptor.isLogEnabled(org.apache.commons.logging.Log)

invokeUnderTrace

protected Object invokeUnderTrace(MethodInvocation invocation,
                                  Log logger)
                           throws Throwable
Wraps the invocation with a JAMon Monitor and writes the current performance statistics to the log (if enabled).

Specified by:
invokeUnderTrace in class AbstractTraceInterceptor
logger - the Log to write trace messages to
Returns:
the result of the call to MethodInvocation.proceed()
Throws:
Throwable - if the call to MethodInvocation.proceed() encountered any errors
See Also:
MonitorFactory.start(java.lang.String), Monitor.stop()