Class ConnectionState
- java.lang.Object
-
- org.apache.tomcat.jdbc.pool.JdbcInterceptor
-
- org.apache.tomcat.jdbc.pool.interceptor.ConnectionState
-
- All Implemented Interfaces:
java.lang.reflect.InvocationHandler
public class ConnectionState extends JdbcInterceptor
Interceptor that keep track of connection state to avoid roundtrips to the database. TheConnectionPool
is optimized to do as little work as possible. The pool itself doesn't remember settings likeConnection.setAutoCommit(boolean)
,Connection.setReadOnly(boolean)
,Connection.setCatalog(String)
orConnection.setTransactionIsolation(int)
. It relies on the application to remember how and when these settings have been applied. In the cases where the application code doesn't know or want to keep track of the state, this interceptor helps cache the state, and it also avoids roundtrips to the database asking for it.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.Boolean
autoCommit
protected java.lang.String
catalog
protected java.lang.Boolean
readOnly
protected java.lang.String[]
readState
protected java.lang.Integer
transactionIsolation
protected java.lang.String[]
writeState
-
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 ConnectionState()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
disconnected(ConnectionPool parent, PooledConnection con, boolean finalizing)
Called whenConnection.close()
is called on the underlying connection.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.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.-
Methods inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor
compare, compare, getNext, getProperties, isUseEquals, poolClosed, poolStarted, setNext, setProperties, setUseEquals
-
-
-
-
Field Detail
-
readState
protected final java.lang.String[] readState
-
writeState
protected final java.lang.String[] writeState
-
autoCommit
protected java.lang.Boolean autoCommit
-
transactionIsolation
protected java.lang.Integer transactionIsolation
-
readOnly
protected java.lang.Boolean readOnly
-
catalog
protected java.lang.String catalog
-
-
Method Detail
-
reset
public void reset(ConnectionPool parent, PooledConnection con)
Description copied from class:JdbcInterceptor
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.
This method may be called with null as both arguments when we are closing down the connection.- Specified by:
reset
in classJdbcInterceptor
- 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
-
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:JdbcInterceptor
Gets invoked each time an operation onConnection
is invoked.- Specified by:
invoke
in interfacejava.lang.reflect.InvocationHandler
- Overrides:
invoke
in classJdbcInterceptor
- Throws:
java.lang.Throwable
-
-