Apache Tomcat 7.0.22

org.apache.tomcat.jdbc.pool.interceptor
Class SlowQueryReportJmx

java.lang.Object
  extended by org.apache.tomcat.jdbc.pool.JdbcInterceptor
      extended by org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
          extended by org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport
              extended by org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport
                  extended by 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.

Author:
fhanik

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport
SlowQueryReport.QueryStats
 
Nested classes/interfaces inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport
AbstractQueryReport.StatementProxy
 
Field Summary
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
           
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
maxQueries, perPoolStats, queries
 
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport
constructors, threshold
 
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
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, GETCONNECTION_VAL, ISCLOSED_VAL, ISWRAPPERFOR_VAL, properties, TOSTRING_VAL, UNWRAP_VAL
 
Constructor Summary
SlowQueryReportJmx()
           
 
Method Summary
 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()
           
static javax.management.ObjectName getObjectName(java.lang.Class<?> clazz, java.lang.String poolName)
           
 java.lang.String getPoolName()
          JMX operation - return the name of the pool
 java.lang.String[] getPoolNames()
          JMX operation - return the names of all the pools
 javax.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 threshold
 void reset(ConnectionPool parent, PooledConnection con)
          no-op for this interceptor. no state is stored.
 void resetStats()
          JMX operation - remove all stats for this connection pool
 void 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, prepareCall, prepareStatement, removeOldest, setMaxQueries
 
Methods inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport
createStatement, getConstructor, getThreshold, reportQuery, setThreshold
 
Methods inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
invoke, isExecute, isStatement, process
 
Methods inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor
compare, compare, disconnected, getNext, getProperties, isUseEquals, setNext, setUseEquals
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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

SLOW_QUERY_TYPE

protected static javax.management.openmbean.CompositeType SLOW_QUERY_TYPE

mbeans

protected static 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 java.util.concurrent.atomic.AtomicLong notifySequence

notifyPool

protected boolean notifyPool

pool

protected ConnectionPool pool
Constructor Detail

SlowQueryReportJmx

public SlowQueryReportJmx()
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 interface javax.management.NotificationBroadcaster
Throws:
java.lang.IllegalArgumentException

getNotificationInfo

public javax.management.MBeanNotificationInfo[] getNotificationInfo()
Specified by:
getNotificationInfo in interface javax.management.NotificationBroadcaster

removeNotificationListener

public void removeNotificationListener(javax.management.NotificationListener listener)
                                throws javax.management.ListenerNotFoundException
Specified by:
removeNotificationListener in interface javax.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 interface javax.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 class SlowQueryReport
Parameters:
parent - - the connection pool owning the connection
con - - 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 class SlowQueryReport
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 class SlowQueryReport
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 class SlowQueryReport
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

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 class SlowQueryReport
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

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 interface SlowQueryReportJmxMBean
Returns:
- the slow query report as composite data.
Throws:
javax.management.openmbean.OpenDataException

deregisterJmx

protected void deregisterJmx()

getObjectName

public static 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 class SlowQueryReport

Apache Tomcat 7.0.22

Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.