Apache Tomcat 7.0.28

org.apache.tomcat.jdbc.pool.interceptor
Class AbstractQueryReport

java.lang.Object
  extended by org.apache.tomcat.jdbc.pool.JdbcInterceptor
      extended by org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
          extended by org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport
All Implemented Interfaces:
InvocationHandler
Direct Known Subclasses:
ResetAbandonedTimer, SlowQueryReport

public abstract class AbstractQueryReport
extends AbstractCreateStatementInterceptor

Abstract class that wraps statements and intercepts query executions.

Author:
fhanik

Nested Class Summary
protected  class AbstractQueryReport.StatementProxy
          Class to measure query execute time
 
Field Summary
protected static Constructor<?>[] constructors
          the constructors that are used to create statement proxies
protected  long threshold
          The threshold in milliseconds.
 
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
CREATE_STATEMENT, CREATE_STATEMENT_IDX, EXECUTE, EXECUTE_BATCH, EXECUTE_QUERY, EXECUTE_TYPES, EXECUTE_UPDATE, PREPARE_CALL, PREPARE_CALL_IDX, PREPARE_STATEMENT, PREPARE_STATEMENT_IDX, STATEMENT_TYPE_COUNT, STATEMENT_TYPES
 
Fields inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor
CLOSE_VAL, GETCONNECTION_VAL, ISCLOSED_VAL, ISVALID_VAL, ISWRAPPERFOR_VAL, properties, TOSTRING_VAL, UNWRAP_VAL
 
Constructor Summary
AbstractQueryReport()
           
 
Method Summary
 Object createStatement(Object proxy, Method method, Object[] args, Object statement, long time)
          Creates a statement interceptor to monitor query response times
protected  Constructor<?> getConstructor(int idx, Class<?> clazz)
          Creates a constructor for a proxy class, if one doesn't already exist
 long getThreshold()
          returns the query measure threshold.
protected abstract  void prepareCall(String query, long time)
          Invoked when prepareCall has been called and completed.
protected abstract  void prepareStatement(String sql, long time)
          Invoked when prepareStatement has been called and completed.
protected  String reportFailedQuery(String query, Object[] args, String name, long start, Throwable t)
          Invoked when a query execution, a call to execute/executeQuery or executeBatch failed.
protected  String reportQuery(String query, Object[] args, String name, long start, long delta)
          Invoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was within the timing threshold
protected  String reportSlowQuery(String query, Object[] args, String name, long start, long delta)
          Invoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was exceeded the timing threshold
 void setThreshold(long threshold)
          Sets the query measurement threshold.
 
Methods inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
closeInvoked, invoke, isExecute, isStatement, process, reset
 
Methods inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor
compare, compare, disconnected, getNext, getProperties, isUseEquals, poolClosed, poolStarted, setNext, setProperties, setUseEquals
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

threshold

protected long threshold
The threshold in milliseconds. If the query is faster than this, we don't measure it


constructors

protected static final Constructor<?>[] constructors
the constructors that are used to create statement proxies

Constructor Detail

AbstractQueryReport

public AbstractQueryReport()
Method Detail

prepareStatement

protected abstract void prepareStatement(String sql,
                                         long time)
Invoked when prepareStatement has been called and completed.

Parameters:
sql - - the string used to prepare the statement with
time - - the time it took to invoke prepare

prepareCall

protected abstract void prepareCall(String query,
                                    long time)
Invoked when prepareCall has been called and completed.

Parameters:
query - - the string used to prepare the statement with
time - - the time it took to invoke prepare

reportFailedQuery

protected String reportFailedQuery(String query,
                                   Object[] args,
                                   String name,
                                   long start,
                                   Throwable t)
Invoked when a query execution, a call to execute/executeQuery or executeBatch failed.

Parameters:
query - the query that was executed and failed
args - the arguments to the execution
name - the name of the method used to execute AbstractCreateStatementInterceptor.isExecute(Method, boolean)
start - the time the query execution started
t - the exception that happened
Returns:
- the SQL that was executed or the string "batch" if it was a batch execution

reportQuery

protected String reportQuery(String query,
                             Object[] args,
                             String name,
                             long start,
                             long delta)
Invoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was within the timing threshold

Parameters:
query - the query that was executed and failed
args - the arguments to the execution
name - the name of the method used to execute AbstractCreateStatementInterceptor.isExecute(Method, boolean)
start - the time the query execution started
delta - the time the execution took
Returns:
- the SQL that was executed or the string "batch" if it was a batch execution

reportSlowQuery

protected String reportSlowQuery(String query,
                                 Object[] args,
                                 String name,
                                 long start,
                                 long delta)
Invoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was exceeded the timing threshold

Parameters:
query - the query that was executed and failed
args - the arguments to the execution
name - the name of the method used to execute AbstractCreateStatementInterceptor.isExecute(Method, boolean)
start - the time the query execution started
delta - the time the execution took
Returns:
- the SQL that was executed or the string "batch" if it was a batch execution

getThreshold

public long getThreshold()
returns the query measure threshold. This value is in milliseconds. If the query is faster than this threshold than it wont be accounted for

Returns:
the threshhold in milliseconds

setThreshold

public void setThreshold(long threshold)
Sets the query measurement threshold. The value is in milliseconds. If the query goes faster than this threshold it will not be recorded.

Parameters:
threshold - set to -1 to record every query. Value is in milliseconds.

getConstructor

protected Constructor<?> getConstructor(int idx,
                                        Class<?> clazz)
                                 throws NoSuchMethodException
Creates a constructor for a proxy class, if one doesn't already exist

Parameters:
idx - - the index of the constructor
clazz - - the interface that the proxy will implement
Returns:
- returns a constructor used to create new instances
Throws:
NoSuchMethodException

createStatement

public Object createStatement(Object proxy,
                              Method method,
                              Object[] args,
                              Object statement,
                              long time)
Creates a statement interceptor to monitor query response times

Specified by:
createStatement in class AbstractCreateStatementInterceptor
Parameters:
proxy - the actual proxy object
method - the method that was called. It will be one of the methods defined in AbstractCreateStatementInterceptor.STATEMENT_TYPES
args - the arguments to the method
statement - the statement that the underlying connection created
Returns:
a Statement object

Apache Tomcat 7.0.28

Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.