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:
java.lang.reflect.InvocationHandler
,javax.management.NotificationBroadcaster
,javax.management.NotificationEmitter
,SlowQueryReportJmxMBean
public class SlowQueryReportJmx extends SlowQueryReport implements javax.management.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
Fields Modifier and Type Field Description static java.lang.String
FAILED_QUERY_NOTIFICATION
protected static java.util.concurrent.ConcurrentHashMap<java.lang.String,SlowQueryReportJmxMBean>
mbeans
protected javax.management.NotificationBroadcasterSupport
notifier
protected boolean
notifyPool
protected static java.util.concurrent.atomic.AtomicLong
notifySequence
static java.lang.String
objectNameAttribute
protected ConnectionPool
pool
protected java.lang.String
poolName
static java.lang.String
SLOW_QUERY_NOTIFICATION
protected static javax.management.openmbean.CompositeType
SLOW_QUERY_TYPE
-
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, 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, EQUALS_VAL, GETCONNECTION_VAL, HASHCODE_VAL, ISCLOSED_VAL, ISVALID_VAL, ISWRAPPERFOR_VAL, properties, TOSTRING_VAL, UNWRAP_VAL
-
-
Constructor Summary
Constructors Constructor Description SlowQueryReportJmx()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addNotificationListener(javax.management.NotificationListener listener, javax.management.NotificationFilter filter, java.lang.Object handback)
protected void
deregisterJmx()
protected static javax.management.openmbean.CompositeType
getCompositeType()
javax.management.MBeanNotificationInfo[]
getNotificationInfo()
javax.management.ObjectName
getObjectName(java.lang.Class<?> clazz, java.lang.String poolName)
java.lang.String
getPoolName()
JMX operation - return the name of the pooljava.lang.String[]
getPoolNames()
JMX operation - return the names of all the poolsjavax.management.openmbean.CompositeData[]
getSlowQueriesCD()
JMX operation - returns all the queries we have collected.boolean
isNotifyPool()
protected void
notifyJmx(java.lang.String query, java.lang.String type)
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
registerJmx()
void
removeNotificationListener(javax.management.NotificationListener listener)
void
removeNotificationListener(javax.management.NotificationListener listener, javax.management.NotificationFilter filter, java.lang.Object handback)
protected java.lang.String
reportFailedQuery(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.String
reportSlowQuery(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 thresholdvoid
reset(ConnectionPool parent, PooledConnection con)
no-op for this interceptor. no state is stored.void
resetStats()
JMX operation - remove all stats for this connection poolvoid
setNotifyPool(boolean notifyPool)
void
setProperties(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.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 Detail
-
SLOW_QUERY_NOTIFICATION
public static final java.lang.String SLOW_QUERY_NOTIFICATION
- See Also:
- Constant Field Values
-
FAILED_QUERY_NOTIFICATION
public static final java.lang.String FAILED_QUERY_NOTIFICATION
- See Also:
- Constant Field Values
-
objectNameAttribute
public static final java.lang.String objectNameAttribute
- See Also:
- Constant Field Values
-
SLOW_QUERY_TYPE
protected static volatile javax.management.openmbean.CompositeType SLOW_QUERY_TYPE
-
mbeans
protected static final java.util.concurrent.ConcurrentHashMap<java.lang.String,SlowQueryReportJmxMBean> mbeans
-
notifier
protected volatile javax.management.NotificationBroadcasterSupport notifier
-
poolName
protected java.lang.String poolName
-
notifySequence
protected static final java.util.concurrent.atomic.AtomicLong notifySequence
-
notifyPool
protected boolean notifyPool
-
pool
protected ConnectionPool pool
-
-
Method Detail
-
addNotificationListener
public void addNotificationListener(javax.management.NotificationListener listener, javax.management.NotificationFilter filter, java.lang.Object handback) throws java.lang.IllegalArgumentException
- Specified by:
addNotificationListener
in interfacejavax.management.NotificationBroadcaster
- Throws:
java.lang.IllegalArgumentException
-
getNotificationInfo
public javax.management.MBeanNotificationInfo[] getNotificationInfo()
- Specified by:
getNotificationInfo
in interfacejavax.management.NotificationBroadcaster
-
removeNotificationListener
public void removeNotificationListener(javax.management.NotificationListener listener) throws javax.management.ListenerNotFoundException
- Specified by:
removeNotificationListener
in interfacejavax.management.NotificationBroadcaster
- Throws:
javax.management.ListenerNotFoundException
-
removeNotificationListener
public void removeNotificationListener(javax.management.NotificationListener listener, javax.management.NotificationFilter filter, java.lang.Object handback) throws javax.management.ListenerNotFoundException
- Specified by:
removeNotificationListener
in interfacejavax.management.NotificationEmitter
- Throws:
javax.management.ListenerNotFoundException
-
getCompositeType
protected static javax.management.openmbean.CompositeType getCompositeType()
-
reset
public void reset(ConnectionPool parent, PooledConnection con)
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
public void poolClosed(ConnectionPool pool)
Description copied from class:SlowQueryReport
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
public void poolStarted(ConnectionPool pool)
Description copied from class:SlowQueryReport
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 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: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
protected void notifyJmx(java.lang.String query, java.lang.String type)
-
reportSlowQuery
protected java.lang.String reportSlowQuery(java.lang.String query, java.lang.Object[] args, java.lang.String name, long start, long delta)
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
public java.lang.String[] getPoolNames()
JMX operation - return the names of all the pools- Returns:
- - all the names of pools that we have stored data for
-
getPoolName
public java.lang.String 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
public javax.management.openmbean.CompositeData[] getSlowQueriesCD() throws javax.management.openmbean.OpenDataException
JMX operation - returns all the queries we have collected.- Specified by:
getSlowQueriesCD
in interfaceSlowQueryReportJmxMBean
- Returns:
- - the slow query report as composite data.
- Throws:
javax.management.openmbean.OpenDataException
-
deregisterJmx
protected void deregisterJmx()
-
getObjectName
public javax.management.ObjectName getObjectName(java.lang.Class<?> clazz, java.lang.String poolName) throws javax.management.MalformedObjectNameException
- Throws:
javax.management.MalformedObjectNameException
-
registerJmx
protected void registerJmx()
-
setProperties
public void setProperties(java.util.Map<java.lang.String,PoolProperties.InterceptorProperty> properties)
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
-
-