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
Fields Modifier and Type Field Description static StringFAILED_QUERY_NOTIFICATIONprotected static ConcurrentHashMap<String,SlowQueryReportJmxMBean>mbeansprotected NotificationBroadcasterSupportnotifierprotected booleannotifyPoolprotected static AtomicLongnotifySequencestatic StringobjectNameAttributeprotected ConnectionPoolpoolprotected StringpoolNamestatic StringSLOW_QUERY_NOTIFICATIONprotected static CompositeTypeSLOW_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 voidaddNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)protected voidderegisterJmx()protected static CompositeTypegetCompositeType()MBeanNotificationInfo[]getNotificationInfo()ObjectNamegetObjectName(Class<?> clazz, String poolName)StringgetPoolName()JMX operation - return the name of the poolString[]getPoolNames()JMX operation - return the names of all the poolsCompositeData[]getSlowQueriesCD()JMX operation - returns all the queries we have collected.booleanisNotifyPool()protected voidnotifyJmx(String query, String type)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.protected voidregisterJmx()voidremoveNotificationListener(NotificationListener listener)voidremoveNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)protected StringreportFailedQuery(String query, Object[] args, String name, long start, Throwable t)Invoked when a query execution, a call to execute/executeQuery or executeBatch failed.protected StringreportSlowQuery(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 thresholdvoidreset(ConnectionPool parent, PooledConnection con)no-op for this interceptor. no state is stored.voidresetStats()JMX operation - remove all stats for this connection poolvoidsetNotifyPool(boolean notifyPool)voidsetProperties(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 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 String SLOW_QUERY_NOTIFICATION
- See Also:
- Constant Field Values
-
FAILED_QUERY_NOTIFICATION
public static final String FAILED_QUERY_NOTIFICATION
- See Also:
- Constant Field Values
-
objectNameAttribute
public static final String objectNameAttribute
- See Also:
- Constant Field Values
-
SLOW_QUERY_TYPE
protected static volatile CompositeType SLOW_QUERY_TYPE
-
mbeans
protected static final ConcurrentHashMap<String,SlowQueryReportJmxMBean> mbeans
-
notifier
protected volatile NotificationBroadcasterSupport notifier
-
poolName
protected String poolName
-
notifySequence
protected static final AtomicLong notifySequence
-
notifyPool
protected boolean notifyPool
-
pool
protected ConnectionPool pool
-
-
Method Detail
-
addNotificationListener
public void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException
- Specified by:
addNotificationListenerin interfaceNotificationBroadcaster- Throws:
IllegalArgumentException
-
getNotificationInfo
public MBeanNotificationInfo[] getNotificationInfo()
- Specified by:
getNotificationInfoin interfaceNotificationBroadcaster
-
removeNotificationListener
public void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
- Specified by:
removeNotificationListenerin interfaceNotificationBroadcaster- Throws:
ListenerNotFoundException
-
removeNotificationListener
public void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws ListenerNotFoundException
- Specified by:
removeNotificationListenerin interfaceNotificationEmitter- Throws:
ListenerNotFoundException
-
getCompositeType
protected static CompositeType getCompositeType()
-
reset
public void reset(ConnectionPool parent, PooledConnection con)
Description copied from class:AbstractCreateStatementInterceptorno-op for this interceptor. no state is stored.- Overrides:
resetin classSlowQueryReport- Parameters:
parent- - the connection pool owning the connectioncon- - the pooled connection
-
poolClosed
public 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 classSlowQueryReport- Parameters:
pool- - the pool that is being closed.
-
poolStarted
public 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 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:AbstractQueryReportInvoked when a query execution, a call to execute/executeQuery or executeBatch failed.- Overrides:
reportFailedQueryin 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
-
reportSlowQuery
protected String reportSlowQuery(String query, Object[] args, 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 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 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 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 CompositeData[] getSlowQueriesCD() throws OpenDataException
JMX operation - returns all the queries we have collected.- Specified by:
getSlowQueriesCDin 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
public void setProperties(Map<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 classSlowQueryReport- Parameters:
properties- The properties
-
-