Class StatementCache
- java.lang.Object
-
- org.apache.tomcat.jdbc.pool.JdbcInterceptor
-
- org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
-
- org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor
-
- org.apache.tomcat.jdbc.pool.interceptor.StatementCache
-
- All Implemented Interfaces:
java.lang.reflect.InvocationHandler
,StatementCacheMBean
public class StatementCache extends StatementDecoratorInterceptor implements StatementCacheMBean
Interceptor that cachesPreparedStatement
and/orCallableStatement
instances on a connection.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
StatementCache.CachedStatement
-
Nested classes/interfaces inherited from class org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor
StatementDecoratorInterceptor.ResultSetProxy, StatementDecoratorInterceptor.StatementProxy<T extends java.sql.Statement>
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String[]
ALL_TYPES
protected static java.lang.String[]
CALLABLE_TYPE
protected static java.lang.String[]
NO_TYPE
protected static java.lang.String[]
PREPARED_TYPE
protected static java.lang.String
STATEMENT_CACHE_ATTR
-
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor
EXECUTE_QUERY, GET_GENERATED_KEYS, GET_RESULTSET, RESULTSET_TYPES, resultSetConstructor
-
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
constructors, CREATE_STATEMENT, CREATE_STATEMENT_IDX, EXECUTE, EXECUTE_BATCH, 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 StatementCache()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
cacheStatement(StatementCache.CachedStatement proxy)
void
closeStatement(StatementCache.CachedStatement st)
protected org.apache.tomcat.jdbc.pool.interceptor.StatementCache.CacheKey
createCacheKey(java.lang.reflect.Method method, java.lang.Object[] args)
protected org.apache.tomcat.jdbc.pool.interceptor.StatementCache.CacheKey
createCacheKey(java.lang.String methodName, java.lang.Object[] args)
protected java.lang.Object
createDecorator(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object statement, java.lang.reflect.Constructor<?> constructor, java.lang.String sql)
Creates a proxy for a Statement.void
disconnected(ConnectionPool parent, PooledConnection con, boolean finalizing)
Called whenConnection.close()
is called on the underlying connection.protected java.util.concurrent.ConcurrentHashMap<org.apache.tomcat.jdbc.pool.interceptor.StatementCache.CacheKey,StatementCache.CachedStatement>
getCache()
java.util.concurrent.atomic.AtomicInteger
getCacheSize()
int
getCacheSizePerConnection()
int
getMaxCacheSize()
java.lang.String[]
getTypes()
java.lang.Object
invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
Gets invoked each time an operation onConnection
is invoked.boolean
isCacheCallable()
StatementCache.CachedStatement
isCached(java.lang.reflect.Method method, java.lang.Object[] args)
boolean
isCachePrepared()
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.boolean
removeStatement(StatementCache.CachedStatement proxy)
void
reset(ConnectionPool parent, PooledConnection con)
no-op for this interceptor. no state is stored.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.StatementDecoratorInterceptor
closeInvoked, createStatement, getResultSetConstructor, isExecuteQuery, isExecuteQuery, isResultSet
-
Methods inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
getConstructor, isExecute, isStatement, process
-
Methods inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor
compare, compare, getNext, getProperties, isUseEquals, setNext, setUseEquals
-
-
-
-
Field Detail
-
ALL_TYPES
protected static final java.lang.String[] ALL_TYPES
-
CALLABLE_TYPE
protected static final java.lang.String[] CALLABLE_TYPE
-
PREPARED_TYPE
protected static final java.lang.String[] PREPARED_TYPE
-
NO_TYPE
protected static final java.lang.String[] NO_TYPE
-
STATEMENT_CACHE_ATTR
protected static final java.lang.String STATEMENT_CACHE_ATTR
-
-
Method Detail
-
isCachePrepared
public boolean isCachePrepared()
- Specified by:
isCachePrepared
in interfaceStatementCacheMBean
-
isCacheCallable
public boolean isCacheCallable()
- Specified by:
isCacheCallable
in interfaceStatementCacheMBean
-
getMaxCacheSize
public int getMaxCacheSize()
- Specified by:
getMaxCacheSize
in interfaceStatementCacheMBean
-
getTypes
public java.lang.String[] getTypes()
-
getCacheSize
public java.util.concurrent.atomic.AtomicInteger getCacheSize()
- Specified by:
getCacheSize
in interfaceStatementCacheMBean
-
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 classJdbcInterceptor
- Parameters:
properties
- The properties
-
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 classJdbcInterceptor
- Parameters:
pool
- - the pool that is being closed.
-
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 classJdbcInterceptor
- Parameters:
pool
- - the pool that is being closed.
-
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 classAbstractCreateStatementInterceptor
- Parameters:
parent
- - the connection pool owning the connectioncon
- - the pooled connection
-
disconnected
public void disconnected(ConnectionPool parent, PooledConnection con, boolean finalizing)
Description copied from class:JdbcInterceptor
Called whenConnection.close()
is called on the underlying connection. This is to notify the interceptors, that the physical connection has been released. Implementation of this method should be thought through with care, as no actions should trigger an exception.- Overrides:
disconnected
in classJdbcInterceptor
- Parameters:
parent
- - the connection pool that this connection belongs tocon
- - the pooled connection that holds this connectionfinalizing
- - if this connection is finalizing. True means that the pooled connection will not reconnect the underlying connection
-
closeStatement
public void closeStatement(StatementCache.CachedStatement st)
-
createDecorator
protected java.lang.Object createDecorator(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object statement, java.lang.reflect.Constructor<?> constructor, java.lang.String sql) throws java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException
Description copied from class:StatementDecoratorInterceptor
Creates a proxy for a Statement.- Overrides:
createDecorator
in classStatementDecoratorInterceptor
- Parameters:
proxy
- The proxy object on which the method that triggered the creation of the statement was called.method
- The method that was called on the proxyargs
- The arguments passed as part of the method call to the proxystatement
- The statement object that is to be proxiedconstructor
- The constructor for the desired proxysql
- The sql of of the statement- Returns:
- A new proxy for the Statement
- Throws:
java.lang.InstantiationException
- Couldn't instantiate objectjava.lang.IllegalAccessException
- Inaccessible constructorjava.lang.reflect.InvocationTargetException
- Exception thrown from constructor
-
invoke
public java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args) throws java.lang.Throwable
Description copied from class:AbstractCreateStatementInterceptor
Gets invoked each time an operation onConnection
is invoked.- Specified by:
invoke
in interfacejava.lang.reflect.InvocationHandler
- Overrides:
invoke
in classAbstractCreateStatementInterceptor
- Throws:
java.lang.Throwable
-
isCached
public StatementCache.CachedStatement isCached(java.lang.reflect.Method method, java.lang.Object[] args)
-
cacheStatement
public boolean cacheStatement(StatementCache.CachedStatement proxy)
-
removeStatement
public boolean removeStatement(StatementCache.CachedStatement proxy)
-
getCache
protected java.util.concurrent.ConcurrentHashMap<org.apache.tomcat.jdbc.pool.interceptor.StatementCache.CacheKey,StatementCache.CachedStatement> getCache()
-
getCacheSizePerConnection
public int getCacheSizePerConnection()
- Specified by:
getCacheSizePerConnection
in interfaceStatementCacheMBean
-
createCacheKey
protected org.apache.tomcat.jdbc.pool.interceptor.StatementCache.CacheKey createCacheKey(java.lang.reflect.Method method, java.lang.Object[] args)
-
createCacheKey
protected org.apache.tomcat.jdbc.pool.interceptor.StatementCache.CacheKey createCacheKey(java.lang.String methodName, java.lang.Object[] args)
-
-