Class PooledDataSource

  • All Implemented Interfaces:
    java.sql.Wrapper, javax.sql.CommonDataSource, javax.sql.DataSource

    public class PooledDataSource
    extends java.lang.Object
    implements javax.sql.DataSource
    This is a simple, synchronous, thread-safe database connection pool.
    Author:
    Clinton Begin
    • Field Detail

      • poolMaximumActiveConnections

        protected int poolMaximumActiveConnections
      • poolMaximumIdleConnections

        protected int poolMaximumIdleConnections
      • poolMaximumCheckoutTime

        protected int poolMaximumCheckoutTime
      • poolTimeToWait

        protected int poolTimeToWait
      • poolMaximumLocalBadConnectionTolerance

        protected int poolMaximumLocalBadConnectionTolerance
      • poolPingQuery

        protected java.lang.String poolPingQuery
      • poolPingEnabled

        protected boolean poolPingEnabled
      • poolPingConnectionsNotUsedFor

        protected int poolPingConnectionsNotUsedFor
    • Constructor Detail

      • PooledDataSource

        public PooledDataSource()
      • PooledDataSource

        public PooledDataSource​(java.lang.String driver,
                                java.lang.String url,
                                java.lang.String username,
                                java.lang.String password)
      • PooledDataSource

        public PooledDataSource​(java.lang.String driver,
                                java.lang.String url,
                                java.util.Properties driverProperties)
      • PooledDataSource

        public PooledDataSource​(java.lang.ClassLoader driverClassLoader,
                                java.lang.String driver,
                                java.lang.String url,
                                java.lang.String username,
                                java.lang.String password)
      • PooledDataSource

        public PooledDataSource​(java.lang.ClassLoader driverClassLoader,
                                java.lang.String driver,
                                java.lang.String url,
                                java.util.Properties driverProperties)
    • Method Detail

      • getConnection

        public java.sql.Connection getConnection()
                                          throws java.sql.SQLException
        Specified by:
        getConnection in interface javax.sql.DataSource
        Throws:
        java.sql.SQLException
      • getConnection

        public java.sql.Connection getConnection​(java.lang.String username,
                                                 java.lang.String password)
                                          throws java.sql.SQLException
        Specified by:
        getConnection in interface javax.sql.DataSource
        Throws:
        java.sql.SQLException
      • setLoginTimeout

        public void setLoginTimeout​(int loginTimeout)
        Specified by:
        setLoginTimeout in interface javax.sql.CommonDataSource
        Specified by:
        setLoginTimeout in interface javax.sql.DataSource
      • getLoginTimeout

        public int getLoginTimeout()
        Specified by:
        getLoginTimeout in interface javax.sql.CommonDataSource
        Specified by:
        getLoginTimeout in interface javax.sql.DataSource
      • setLogWriter

        public void setLogWriter​(java.io.PrintWriter logWriter)
        Specified by:
        setLogWriter in interface javax.sql.CommonDataSource
        Specified by:
        setLogWriter in interface javax.sql.DataSource
      • getLogWriter

        public java.io.PrintWriter getLogWriter()
        Specified by:
        getLogWriter in interface javax.sql.CommonDataSource
        Specified by:
        getLogWriter in interface javax.sql.DataSource
      • setDriver

        public void setDriver​(java.lang.String driver)
      • setUrl

        public void setUrl​(java.lang.String url)
      • setUsername

        public void setUsername​(java.lang.String username)
      • setPassword

        public void setPassword​(java.lang.String password)
      • setDefaultAutoCommit

        public void setDefaultAutoCommit​(boolean defaultAutoCommit)
      • setDefaultTransactionIsolationLevel

        public void setDefaultTransactionIsolationLevel​(java.lang.Integer defaultTransactionIsolationLevel)
      • setDriverProperties

        public void setDriverProperties​(java.util.Properties driverProps)
      • setDefaultNetworkTimeout

        public void setDefaultNetworkTimeout​(java.lang.Integer milliseconds)
        Sets the default network timeout value to wait for the database operation to complete. See Connection.setNetworkTimeout(java.util.concurrent.Executor, int)
        Parameters:
        milliseconds - The time in milliseconds to wait for the database operation to complete.
        Since:
        3.5.2
      • setPoolMaximumActiveConnections

        public void setPoolMaximumActiveConnections​(int poolMaximumActiveConnections)
        The maximum number of active connections.
        Parameters:
        poolMaximumActiveConnections - The maximum number of active connections
      • setPoolMaximumIdleConnections

        public void setPoolMaximumIdleConnections​(int poolMaximumIdleConnections)
        The maximum number of idle connections.
        Parameters:
        poolMaximumIdleConnections - The maximum number of idle connections
      • setPoolMaximumLocalBadConnectionTolerance

        public void setPoolMaximumLocalBadConnectionTolerance​(int poolMaximumLocalBadConnectionTolerance)
        The maximum number of tolerance for bad connection happens in one thread which are applying for new PooledConnection.
        Parameters:
        poolMaximumLocalBadConnectionTolerance - max tolerance for bad connection happens in one thread
        Since:
        3.4.5
      • setPoolMaximumCheckoutTime

        public void setPoolMaximumCheckoutTime​(int poolMaximumCheckoutTime)
        The maximum time a connection can be used before it *may* be given away again.
        Parameters:
        poolMaximumCheckoutTime - The maximum time
      • setPoolTimeToWait

        public void setPoolTimeToWait​(int poolTimeToWait)
        The time to wait before retrying to get a connection.
        Parameters:
        poolTimeToWait - The time to wait
      • setPoolPingQuery

        public void setPoolPingQuery​(java.lang.String poolPingQuery)
        The query to be used to check a connection.
        Parameters:
        poolPingQuery - The query
      • setPoolPingEnabled

        public void setPoolPingEnabled​(boolean poolPingEnabled)
        Determines if the ping query should be used.
        Parameters:
        poolPingEnabled - True if we need to check a connection before using it
      • setPoolPingConnectionsNotUsedFor

        public void setPoolPingConnectionsNotUsedFor​(int milliseconds)
        If a connection has not been used in this many milliseconds, ping the database to make sure the connection is still good.
        Parameters:
        milliseconds - the number of milliseconds of inactivity that will trigger a ping
      • getDriver

        public java.lang.String getDriver()
      • getUrl

        public java.lang.String getUrl()
      • getUsername

        public java.lang.String getUsername()
      • getPassword

        public java.lang.String getPassword()
      • isAutoCommit

        public boolean isAutoCommit()
      • getDefaultTransactionIsolationLevel

        public java.lang.Integer getDefaultTransactionIsolationLevel()
      • getDriverProperties

        public java.util.Properties getDriverProperties()
      • getDefaultNetworkTimeout

        public java.lang.Integer getDefaultNetworkTimeout()
        Since:
        3.5.2
      • getPoolMaximumActiveConnections

        public int getPoolMaximumActiveConnections()
      • getPoolMaximumIdleConnections

        public int getPoolMaximumIdleConnections()
      • getPoolMaximumLocalBadConnectionTolerance

        public int getPoolMaximumLocalBadConnectionTolerance()
      • getPoolMaximumCheckoutTime

        public int getPoolMaximumCheckoutTime()
      • getPoolTimeToWait

        public int getPoolTimeToWait()
      • getPoolPingQuery

        public java.lang.String getPoolPingQuery()
      • isPoolPingEnabled

        public boolean isPoolPingEnabled()
      • getPoolPingConnectionsNotUsedFor

        public int getPoolPingConnectionsNotUsedFor()
      • forceCloseAll

        public void forceCloseAll()
        Closes all active and idle connections in the pool.
      • getPoolState

        public PoolState getPoolState()
      • pushConnection

        protected void pushConnection​(org.apache.ibatis.datasource.pooled.PooledConnection conn)
                               throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • pingConnection

        protected boolean pingConnection​(org.apache.ibatis.datasource.pooled.PooledConnection conn)
        Method to check to see if a connection is still usable
        Parameters:
        conn - - the connection to check
        Returns:
        True if the connection is still usable
      • unwrapConnection

        public static java.sql.Connection unwrapConnection​(java.sql.Connection conn)
        Unwraps a pooled connection to get to the 'real' connection
        Parameters:
        conn - - the pooled connection to unwrap
        Returns:
        The 'real' connection
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable
      • unwrap

        public <T> T unwrap​(java.lang.Class<T> iface)
                     throws java.sql.SQLException
        Specified by:
        unwrap in interface java.sql.Wrapper
        Throws:
        java.sql.SQLException
      • isWrapperFor

        public boolean isWrapperFor​(java.lang.Class<?> iface)
        Specified by:
        isWrapperFor in interface java.sql.Wrapper
      • getParentLogger

        public java.util.logging.Logger getParentLogger()
        Specified by:
        getParentLogger in interface javax.sql.CommonDataSource