public abstract class JdbcInterceptor
extends java.lang.Object
implements java.lang.reflect.InvocationHandler
Connection
object the
invoke(Object, Method, Object[])
method on the interceptor will be called.
Interceptors are useful to change or improve behavior of the connection pool.setProperties(Map)
method.
Properties arrive in a key-value pair of Strings as they were received through the configuration.
This method is called once per cached connection object when the object is first configured.Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLOSE_VAL
Connection.close() method name |
static java.lang.String |
EQUALS_VAL
Object.equals(Object) |
static java.lang.String |
GETCONNECTION_VAL
PooledConnection.getConnection() method name |
static java.lang.String |
HASHCODE_VAL
Object.hashCode() |
static java.lang.String |
ISCLOSED_VAL
Connection.isClosed() method name |
static java.lang.String |
ISVALID_VAL
Connection.isValid(int) method name |
static java.lang.String |
ISWRAPPERFOR_VAL
Wrapper.isWrapperFor(Class) method name |
protected java.util.Map<java.lang.String,PoolProperties.InterceptorProperty> |
properties
Properties for this interceptor.
|
static java.lang.String |
TOSTRING_VAL
Object.toString() method name |
static java.lang.String |
UNWRAP_VAL
Wrapper.unwrap(Class) method name |
Constructor and Description |
---|
JdbcInterceptor()
Public constructor for instantiation through reflection
|
Modifier and Type | Method and Description |
---|---|
boolean |
compare(java.lang.String methodName,
java.lang.reflect.Method method)
Compares a method name (String) to a method (Method)
compare(String,String)
Uses reference comparison unless the useEquals property is set to true |
boolean |
compare(java.lang.String name1,
java.lang.String name2)
Performs a string comparison, using references unless the useEquals property is set to true.
|
void |
disconnected(ConnectionPool parent,
PooledConnection con,
boolean finalizing)
Called when
Connection.close() is called on the underlying connection. |
JdbcInterceptor |
getNext()
Returns the next interceptor in the chain
|
java.util.Map<java.lang.String,PoolProperties.InterceptorProperty> |
getProperties()
Returns the properties configured for this interceptor
|
java.lang.Object |
invoke(java.lang.Object proxy,
java.lang.reflect.Method method,
java.lang.Object[] args)
Gets invoked each time an operation on
Connection is invoked. |
boolean |
isUseEquals() |
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.
|
abstract void |
reset(ConnectionPool parent,
PooledConnection con)
Gets called each time the connection is borrowed from the pool
This means that if an interceptor holds a reference to the connection
the interceptor can be reused for another connection.
|
void |
setNext(JdbcInterceptor next)
configures the next interceptor in the chain
|
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
|
void |
setUseEquals(boolean useEquals)
Set to true if string comparisons (for the
compare(String, Method) and compare(String, String) methods) should use the Object.equals(Object) method
The default is false |
public static final java.lang.String CLOSE_VAL
Connection.close()
method namepublic static final java.lang.String TOSTRING_VAL
Object.toString()
method namepublic static final java.lang.String ISCLOSED_VAL
Connection.isClosed()
method namepublic static final java.lang.String GETCONNECTION_VAL
PooledConnection.getConnection()
method namepublic static final java.lang.String UNWRAP_VAL
Wrapper.unwrap(Class)
method namepublic static final java.lang.String ISWRAPPERFOR_VAL
Wrapper.isWrapperFor(Class)
method namepublic static final java.lang.String ISVALID_VAL
Connection.isValid(int)
method namepublic static final java.lang.String EQUALS_VAL
Object.equals(Object)
public static final java.lang.String HASHCODE_VAL
Object.hashCode()
protected java.util.Map<java.lang.String,PoolProperties.InterceptorProperty> properties
public JdbcInterceptor()
public java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args) throws java.lang.Throwable
Connection
is invoked.
invoke
in interface java.lang.reflect.InvocationHandler
java.lang.Throwable
public JdbcInterceptor getNext()
public void setNext(JdbcInterceptor next)
next
- public boolean compare(java.lang.String name1, java.lang.String name2)
name1
- name2
- useEquals
public boolean compare(java.lang.String methodName, java.lang.reflect.Method method)
compare(String,String)
Uses reference comparison unless the useEquals property is set to truemethodName
- method
- public abstract void reset(ConnectionPool parent, PooledConnection con)
parent
- - the connection pool owning the connectioncon
- - the pooled connectionpublic void disconnected(ConnectionPool parent, PooledConnection con, boolean finalizing)
Connection.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.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 connectionpublic java.util.Map<java.lang.String,PoolProperties.InterceptorProperty> getProperties()
public void setProperties(java.util.Map<java.lang.String,PoolProperties.InterceptorProperty> properties)
properties
- public boolean isUseEquals()
public void setUseEquals(boolean useEquals)
compare(String, Method)
and compare(String, String)
methods) should use the Object.equals(Object) method
The default is falseuseEquals
- public void poolClosed(ConnectionPool pool)
pool
- - the pool that is being closed.public void poolStarted(ConnectionPool pool)
pool
- - the pool that is being closed.Copyright © 2000-2018 Apache Software Foundation. All Rights Reserved.