Package org.apache.tomcat.jdbc.pool.interceptor

## 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. The `ConnectionPool` is optimized to do as little work as possible. The pool itself doesn't remember settings like `Connection.setAutoCommit(boolean)`, `Connection.setReadOnly(boolean)`, `Connection.setCatalog(String)` or `Connection.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 when `Connection.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 on `Connection` 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`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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

  - ### Constructor Detail

    - #### ConnectionState

          public ConnectionState()

  - ### 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 class `JdbcInterceptor`
      Parameters:
        `parent` - - the connection pool owning the connection
        `con` - - the pooled connection

    - #### disconnected

          public void disconnected​(ConnectionPool parent,
                                   PooledConnection con,
                                   boolean finalizing)

      Description copied from class: `JdbcInterceptor`
      Called when `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.
      Overrides:
        `disconnected` in class `JdbcInterceptor`
      Parameters:
        `parent` - - the connection pool that this connection belongs to
        `con` - - the pooled connection that holds this connection
        `finalizing` - - 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 on `Connection` is invoked.
      Specified by:
        `invoke` in interface `java.lang.reflect.InvocationHandler`
      Overrides:
        `invoke` in class `JdbcInterceptor`
      Throws:
        `java.lang.Throwable`