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 String
FAILED_QUERY_NOTIFICATION
protected static ConcurrentHashMap<String,SlowQueryReportJmxMBean>
mbeans
protected NotificationBroadcasterSupport
notifier
protected boolean
notifyPool
protected static AtomicLong
notifySequence
static String
objectNameAttribute
protected ConnectionPool
pool
protected String
poolName
static String
SLOW_QUERY_NOTIFICATION
protected static 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(NotificationListener listener, NotificationFilter filter, Object handback)
protected void
deregisterJmx()
protected static CompositeType
getCompositeType()
MBeanNotificationInfo[]
getNotificationInfo()
ObjectName
getObjectName(Class<?> clazz, String poolName)
String
getPoolName()
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.boolean
isNotifyPool()
protected void
notifyJmx(String query, 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(NotificationListener listener)
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
resetStats()
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 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:
addNotificationListener
in interfaceNotificationBroadcaster
- Throws:
IllegalArgumentException
-
getNotificationInfo
public MBeanNotificationInfo[] 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
protected static 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: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
public void poolStarted(ConnectionPool pool)
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
-
reportSlowQuery
protected String reportSlowQuery(String query, Object[] args, 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 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:
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
public void setProperties(Map<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
-
-