Class SlowQueryReportJmx
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
org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx
- All Implemented Interfaces:
InvocationHandler
,NotificationBroadcaster
,NotificationEmitter
,SlowQueryReportJmxMBean
public class SlowQueryReportJmx
extends SlowQueryReport
implements NotificationEmitter, SlowQueryReportJmxMBean
Publishes data to JMX and provides notifications
when failures happen.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport
SlowQueryReport.QueryStats, SlowQueryReport.QueryStatsComparator
Nested classes/interfaces inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport
AbstractQueryReport.StatementProxy
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
protected static final ConcurrentHashMap<String,
SlowQueryReportJmxMBean> protected NotificationBroadcasterSupport
protected boolean
protected static final AtomicLong
static final String
protected ConnectionPool
protected String
static final String
protected static CompositeType
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport
logFailed, logSlow, maxQueries, perPoolStats, queries, queryStatsComparator
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport
threshold
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
constructors, CREATE_STATEMENT, CREATE_STATEMENT_IDX, EXECUTE, EXECUTE_BATCH, EXECUTE_QUERY, EXECUTE_TYPES, EXECUTE_UPDATE, GET_GENERATED_KEYS, GET_RESULTSET, GET_STATEMENT, PREPARE_CALL, PREPARE_CALL_IDX, PREPARE_STATEMENT, PREPARE_STATEMENT_IDX, RESULTSET_IDX, STATEMENT_TYPE_COUNT, STATEMENT_TYPES
Fields inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor
CLOSE_VAL, EQUALS_VAL, GETCONNECTION_VAL, HASHCODE_VAL, ISCLOSED_VAL, ISVALID_VAL, ISWRAPPERFOR_VAL, properties, TOSTRING_VAL, UNWRAP_VAL
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addNotificationListener
(NotificationListener listener, NotificationFilter filter, Object handback) protected void
protected static CompositeType
getObjectName
(Class<?> clazz, String poolName) JMX operation - return the name of the poolString[]
JMX operation - return the names of all the poolsJMX operation - returns all the queries we have collected.boolean
protected void
void
poolClosed
(ConnectionPool pool) This method is invoked by a connection pool when the pool is closed.void
poolStarted
(ConnectionPool pool) This method is invoked by a connection pool when the pool is first started up, usually when the first connection is requested.protected void
void
void
removeNotificationListener
(NotificationListener listener, NotificationFilter filter, Object handback) 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
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 thresholdvoid
reset
(ConnectionPool parent, PooledConnection con) no-op for this interceptor. no state is stored.void
JMX operation - remove all stats for this connection poolvoid
setNotifyPool
(boolean notifyPool) void
setProperties
(Map<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 propertiesMethods inherited from class org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport
closeInvoked, getPoolStats, getQueryStats, isLogFailed, isLogSlow, prepareCall, prepareStatement, removeOldest, reportQuery, setLogFailed, setLogSlow, setMaxQueries
Methods inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport
createStatement, getThreshold, setThreshold
Methods inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
getConstructor, invoke, isExecute, isStatement, process
Methods inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor
compare, compare, disconnected, getNext, getProperties, isUseEquals, setNext, setUseEquals
-
Field Details
-
SLOW_QUERY_NOTIFICATION
- See Also:
-
FAILED_QUERY_NOTIFICATION
- See Also:
-
objectNameAttribute
- See Also:
-
SLOW_QUERY_TYPE
-
mbeans
-
notifier
-
poolName
-
notifySequence
-
notifyPool
protected boolean notifyPool -
pool
-
-
Constructor Details
-
SlowQueryReportJmx
public SlowQueryReportJmx()
-
-
Method Details
-
addNotificationListener
public void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException - Specified by:
addNotificationListener
in interfaceNotificationBroadcaster
- Throws:
IllegalArgumentException
-
getNotificationInfo
- Specified by:
getNotificationInfo
in interfaceNotificationBroadcaster
-
removeNotificationListener
public void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException - Specified by:
removeNotificationListener
in interfaceNotificationBroadcaster
- Throws:
ListenerNotFoundException
-
removeNotificationListener
public void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws ListenerNotFoundException - Specified by:
removeNotificationListener
in interfaceNotificationEmitter
- Throws:
ListenerNotFoundException
-
getCompositeType
-
reset
Description copied from class:AbstractCreateStatementInterceptor
no-op for this interceptor. no state is stored.- Overrides:
reset
in classSlowQueryReport
- Parameters:
parent
- - the connection pool owning the connectioncon
- - the pooled connection
-
poolClosed
Description copied from class:JdbcInterceptor
This 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:
poolClosed
in classSlowQueryReport
- Parameters:
pool
- - the pool that is being closed.
-
poolStarted
Description copied from class:JdbcInterceptor
This 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:
poolStarted
in classSlowQueryReport
- Parameters:
pool
- - the pool that is being closed.
-
reportFailedQuery
protected String reportFailedQuery(String query, Object[] args, String name, long start, Throwable t) Description copied from class:AbstractQueryReport
Invoked when a query execution, a call to execute/executeQuery or executeBatch failed.- Overrides:
reportFailedQuery
in classSlowQueryReport
- Parameters:
query
- the query that was executed and failedargs
- the arguments to the executionname
- the name of the method used to executeAbstractCreateStatementInterceptor.isExecute(Method, boolean)
start
- the time the query execution startedt
- the exception that happened- Returns:
- - the SQL that was executed or the string "batch" if it was a batch execution
-
notifyJmx
-
reportSlowQuery
Description copied from class:AbstractQueryReport
Invoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was exceeded the timing threshold- Overrides:
reportSlowQuery
in classSlowQueryReport
- Parameters:
query
- the query that was executed and failedargs
- the arguments to the executionname
- the name of the method used to executeAbstractCreateStatementInterceptor.isExecute(Method, boolean)
start
- the time the query execution starteddelta
- the time the execution took- Returns:
- - the SQL that was executed or the string "batch" if it was a batch execution
-
getPoolNames
JMX operation - return the names of all the pools- Returns:
- - all the names of pools that we have stored data for
-
getPoolName
JMX operation - return the name of the pool- Returns:
- the name of the pool, unique within the JVM
-
isNotifyPool
public boolean isNotifyPool() -
setNotifyPool
public void setNotifyPool(boolean notifyPool) -
resetStats
public void resetStats()JMX operation - remove all stats for this connection pool -
getSlowQueriesCD
JMX operation - returns all the queries we have collected.- Specified by:
getSlowQueriesCD
in interfaceSlowQueryReportJmxMBean
- Returns:
- - the slow query report as composite data.
- Throws:
OpenDataException
-
deregisterJmx
protected void deregisterJmx() -
getObjectName
public ObjectName getObjectName(Class<?> clazz, String poolName) throws MalformedObjectNameException - Throws:
MalformedObjectNameException
-
registerJmx
protected void registerJmx() -
setProperties
Description copied from class:JdbcInterceptor
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- Overrides:
setProperties
in classSlowQueryReport
- Parameters:
properties
- The properties
-