Class SlowQueryReport
- java.lang.Object
- 
- org.apache.tomcat.jdbc.pool.JdbcInterceptor
- 
- org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
- 
- org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport
- 
- org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport
 
 
 
 
- 
- All Implemented Interfaces:
- java.lang.reflect.InvocationHandler
 - Direct Known Subclasses:
- SlowQueryReportJmx
 
 public class SlowQueryReport extends AbstractQueryReport Slow query report interceptor. Tracks timing of query executions.
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description static classSlowQueryReport.QueryStatsstatic classSlowQueryReport.QueryStatsComparatorCompare QueryStats by their lastInvocation value.- 
Nested classes/interfaces inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReportAbstractQueryReport.StatementProxy
 
- 
 - 
Field SummaryFields Modifier and Type Field Description protected booleanlogFailedFlag to enable disable logging of failed queriesprotected booleanlogSlowFlag to enable disable logging of slow queriesprotected intmaxQueriesMaximum number of queries we will be storingprotected static java.util.concurrent.ConcurrentHashMap<java.lang.String,java.util.concurrent.ConcurrentHashMap<java.lang.String,SlowQueryReport.QueryStats>>perPoolStatswe will be keeping track of query stats on a per pool basisprotected java.util.concurrent.ConcurrentHashMap<java.lang.String,SlowQueryReport.QueryStats>queriesthe queries that are used for this interceptor.protected java.util.Comparator<SlowQueryReport.QueryStats>queryStatsComparatorSort QueryStats by last invocation time- 
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReportthreshold
 - 
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptorconstructors, 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.JdbcInterceptorCLOSE_VAL, EQUALS_VAL, GETCONNECTION_VAL, HASHCODE_VAL, ISCLOSED_VAL, ISVALID_VAL, ISWRAPPERFOR_VAL, properties, TOSTRING_VAL, UNWRAP_VAL
 
- 
 - 
Constructor SummaryConstructors Constructor Description SlowQueryReport()Creates a slow query report interceptor
 - 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcloseInvoked()invoked when the connection receives the close request Not used for now.static java.util.concurrent.ConcurrentHashMap<java.lang.String,SlowQueryReport.QueryStats>getPoolStats(java.lang.String poolname)Returns the query stats for a given poolprotected SlowQueryReport.QueryStatsgetQueryStats(java.lang.String sql)booleanisLogFailed()booleanisLogSlow()voidpoolClosed(ConnectionPool pool)This method is invoked by a connection pool when the pool is closed.voidpoolStarted(ConnectionPool pool)This method is invoked by a connection pool when the pool is first started up, usually when the first connection is requested.voidprepareCall(java.lang.String sql, long time)Invoked when prepareCall has been called and completed.voidprepareStatement(java.lang.String sql, long time)Invoked when prepareStatement has been called and completed.protected voidremoveOldest(java.util.concurrent.ConcurrentHashMap<java.lang.String,SlowQueryReport.QueryStats> queries)Sort QueryStats by last invocation timeprotected java.lang.StringreportFailedQuery(java.lang.String query, java.lang.Object[] args, java.lang.String name, long start, java.lang.Throwable t)Invoked when a query execution, a call to execute/executeQuery or executeBatch failed.protected java.lang.StringreportQuery(java.lang.String query, java.lang.Object[] args, java.lang.String name, long start, long delta)Invoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was within the timing thresholdprotected java.lang.StringreportSlowQuery(java.lang.String query, java.lang.Object[] args, java.lang.String name, long start, long delta)Invoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was exceeded the timing thresholdvoidreset(ConnectionPool parent, PooledConnection con)no-op for this interceptor. no state is stored.voidsetLogFailed(boolean logFailed)voidsetLogSlow(boolean logSlow)voidsetMaxQueries(int maxQueries)voidsetProperties(java.util.Map<java.lang.String,PoolProperties.InterceptorProperty> properties)Called during the creation of an interceptor The properties can be set during the configuration of an interceptor Override this method to perform type casts between string values and object properties- 
Methods inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReportcreateStatement, getThreshold, setThreshold
 - 
Methods inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptorgetConstructor, invoke, isExecute, isStatement, process
 - 
Methods inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptorcompare, compare, disconnected, getNext, getProperties, isUseEquals, setNext, setUseEquals
 
- 
 
- 
- 
- 
Field Detail- 
perPoolStatsprotected static final java.util.concurrent.ConcurrentHashMap<java.lang.String,java.util.concurrent.ConcurrentHashMap<java.lang.String,SlowQueryReport.QueryStats>> perPoolStats we will be keeping track of query stats on a per pool basis
 - 
queriesprotected volatile java.util.concurrent.ConcurrentHashMap<java.lang.String,SlowQueryReport.QueryStats> queries the queries that are used for this interceptor.
 - 
maxQueriesprotected int maxQueries Maximum number of queries we will be storing
 - 
logSlowprotected boolean logSlow Flag to enable disable logging of slow queries
 - 
logFailedprotected boolean logFailed Flag to enable disable logging of failed queries
 - 
queryStatsComparatorprotected final java.util.Comparator<SlowQueryReport.QueryStats> queryStatsComparator Sort QueryStats by last invocation time
 
- 
 - 
Method Detail- 
getPoolStatspublic static java.util.concurrent.ConcurrentHashMap<java.lang.String,SlowQueryReport.QueryStats> getPoolStats(java.lang.String poolname) Returns the query stats for a given pool- Parameters:
- poolname- - the name of the pool we want to retrieve stats for
- Returns:
- a hash map containing statistics for 0 to maxQueries
 
 - 
setMaxQueriespublic void setMaxQueries(int maxQueries) 
 - 
reportFailedQueryprotected java.lang.String reportFailedQuery(java.lang.String query, java.lang.Object[] args, java.lang.String name, long start, java.lang.Throwable t)Description copied from class:AbstractQueryReportInvoked when a query execution, a call to execute/executeQuery or executeBatch failed.- Overrides:
- reportFailedQueryin class- AbstractQueryReport
- 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
 
 - 
reportQueryprotected java.lang.String reportQuery(java.lang.String query, java.lang.Object[] args, java.lang.String name, long start, long delta)Description copied from class:AbstractQueryReportInvoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was within the timing threshold- Overrides:
- reportQueryin class- AbstractQueryReport
- 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
 
 - 
reportSlowQueryprotected java.lang.String reportSlowQuery(java.lang.String query, java.lang.Object[] args, java.lang.String name, long start, long delta)Description copied from class:AbstractQueryReportInvoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was exceeded the timing threshold- Overrides:
- reportSlowQueryin class- AbstractQueryReport
- 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
 
 - 
closeInvokedpublic void closeInvoked() invoked when the connection receives the close request Not used for now.- Specified by:
- closeInvokedin class- AbstractCreateStatementInterceptor
 
 - 
prepareStatementpublic void prepareStatement(java.lang.String sql, long time)Description copied from class:AbstractQueryReportInvoked when prepareStatement has been called and completed.- Specified by:
- prepareStatementin class- AbstractQueryReport
- Parameters:
- sql- - the string used to prepare the statement with
- time- - the time it took to invoke prepare
 
 - 
prepareCallpublic void prepareCall(java.lang.String sql, long time)Description copied from class:AbstractQueryReportInvoked when prepareCall has been called and completed.- Specified by:
- prepareCallin class- AbstractQueryReport
- Parameters:
- sql- - the string used to prepare the statement with
- time- - the time it took to invoke prepare
 
 - 
poolStartedpublic void poolStarted(ConnectionPool pool) Description copied from class:JdbcInterceptorThis method is invoked by a connection pool when the pool is first started up, usually when the first connection is requested. Interceptor classes can override this method if they keep static variables or other tracking means around. This method is only invoked on a single instance of the interceptor, and not on every instance created.- Overrides:
- poolStartedin class- JdbcInterceptor
- Parameters:
- pool- - the pool that is being closed.
 
 - 
poolClosedpublic void poolClosed(ConnectionPool pool) Description copied from class:JdbcInterceptorThis method is invoked by a connection pool when the pool is closed. Interceptor classes can override this method if they keep static variables or other tracking means around. This method is only invoked on a single instance of the interceptor, and not on every instance created.- Overrides:
- poolClosedin class- JdbcInterceptor
- Parameters:
- pool- - the pool that is being closed.
 
 - 
getQueryStatsprotected SlowQueryReport.QueryStats getQueryStats(java.lang.String sql) 
 - 
removeOldestprotected void removeOldest(java.util.concurrent.ConcurrentHashMap<java.lang.String,SlowQueryReport.QueryStats> queries) Sort QueryStats by last invocation time- Parameters:
- queries- The queries map
 
 - 
resetpublic void reset(ConnectionPool parent, PooledConnection con) Description copied from class:AbstractCreateStatementInterceptorno-op for this interceptor. no state is stored.- Overrides:
- resetin class- AbstractCreateStatementInterceptor
- Parameters:
- parent- - the connection pool owning the connection
- con- - the pooled connection
 
 - 
isLogSlowpublic boolean isLogSlow() 
 - 
setLogSlowpublic void setLogSlow(boolean logSlow) 
 - 
isLogFailedpublic boolean isLogFailed() 
 - 
setLogFailedpublic void setLogFailed(boolean logFailed) 
 - 
setPropertiespublic void setProperties(java.util.Map<java.lang.String,PoolProperties.InterceptorProperty> properties) Description copied from class:JdbcInterceptorCalled during the creation of an interceptor The properties can be set during the configuration of an interceptor Override this method to perform type casts between string values and object properties- Overrides:
- setPropertiesin class- JdbcInterceptor
- Parameters:
- properties- The properties
 
 
- 
 
-