Class PoolableConnection

    • Constructor Detail

      • PoolableConnection

        public PoolableConnection​(java.sql.Connection conn,
                                  ObjectPool<PoolableConnection> pool,
                                  javax.management.ObjectName jmxName)
        Parameters:
        conn - my underlying connection
        pool - the pool to which I should return when closed
        jmxName - JMX name
      • PoolableConnection

        public PoolableConnection​(java.sql.Connection conn,
                                  ObjectPool<PoolableConnection> pool,
                                  javax.management.ObjectName jmxObjectName,
                                  java.util.Collection<java.lang.String> disconnectSqlCodes,
                                  boolean fastFailValidation)
        Parameters:
        conn - my underlying connection
        pool - the pool to which I should return when closed
        jmxObjectName - JMX name
        disconnectSqlCodes - SQL_STATE codes considered fatal disconnection errors
        fastFailValidation - true means fatal disconnection errors cause subsequent validations to fail immediately (no attempt to run query or isValid)
    • Method Detail

      • abort

        public void abort​(java.util.concurrent.Executor executor)
                   throws java.sql.SQLException
        Abort my underlying Connection.
        Specified by:
        abort in interface java.sql.Connection
        Overrides:
        abort in class DelegatingConnection<java.sql.Connection>
        Throws:
        java.sql.SQLException
        Since:
        2.9.0
      • close

        public void close()
                   throws java.sql.SQLException
        Returns me to my pool.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.sql.Connection
        Specified by:
        close in interface PoolableConnectionMXBean
        Overrides:
        close in class DelegatingConnection<java.sql.Connection>
        Throws:
        java.sql.SQLException
      • getDisconnectionSqlCodes

        public java.util.Collection<java.lang.String> getDisconnectionSqlCodes()
        Returns:
        The disconnection SQL codes.
        Since:
        2.6.0
      • handleException

        protected void handleException​(java.sql.SQLException e)
                                throws java.sql.SQLException
        Description copied from class: DelegatingConnection
        Handles the given exception by throwing it.
        Overrides:
        handleException in class DelegatingConnection<java.sql.Connection>
        Parameters:
        e - the exception to throw.
        Throws:
        java.sql.SQLException - the exception to throw.
      • isClosed

        public boolean isClosed()
                         throws java.sql.SQLException

        This method should not be used by a client to determine whether or not a connection should be return to the connection pool (by calling close()). Clients should always attempt to return a connection to the pool once it is no longer required.

        Specified by:
        isClosed in interface java.sql.Connection
        Specified by:
        isClosed in interface PoolableConnectionMXBean
        Overrides:
        isClosed in class DelegatingConnection<java.sql.Connection>
        Throws:
        java.sql.SQLException
      • isFastFailValidation

        public boolean isFastFailValidation()
        Returns:
        Whether to fail-fast.
        Since:
        2.6.0
      • passivate

        protected void passivate()
                          throws java.sql.SQLException
        Overrides:
        passivate in class DelegatingConnection<java.sql.Connection>
        Throws:
        java.sql.SQLException
      • reallyClose

        public void reallyClose()
                         throws java.sql.SQLException
        Actually close my underlying Connection.
        Specified by:
        reallyClose in interface PoolableConnectionMXBean
        Throws:
        java.sql.SQLException
      • validate

        @Deprecated
        public void validate​(java.lang.String sql,
                             int timeoutSeconds)
                      throws java.sql.SQLException
        Deprecated.
        Validates the connection, using the following algorithm:
        1. If fastFailValidation (constructor argument) is true and this connection has previously thrown a fatal disconnection exception, a SQLException is thrown.
        2. If sql is null, the driver's #isValid(timeout) is called. If it returns false, SQLException is thrown; otherwise, this method returns successfully.
        3. If sql is not null, it is executed as a query and if the resulting ResultSet contains at least one row, this method returns successfully. If not, SQLException is thrown.
        Parameters:
        sql - The validation SQL query.
        timeoutSeconds - The validation timeout in seconds.
        Throws:
        java.sql.SQLException - Thrown when validation fails or an SQLException occurs during validation
      • validate

        public void validate​(java.lang.String sql,
                             java.time.Duration timeoutDuration)
                      throws java.sql.SQLException
        Validates the connection, using the following algorithm:
        1. If fastFailValidation (constructor argument) is true and this connection has previously thrown a fatal disconnection exception, a SQLException is thrown.
        2. If sql is null, the driver's #isValid(timeout) is called. If it returns false, SQLException is thrown; otherwise, this method returns successfully.
        3. If sql is not null, it is executed as a query and if the resulting ResultSet contains at least one row, this method returns successfully. If not, SQLException is thrown.
        Parameters:
        sql - The validation SQL query.
        timeoutDuration - The validation timeout in seconds.
        Throws:
        java.sql.SQLException - Thrown when validation fails or an SQLException occurs during validation
        Since:
        2.10.0