Class PooledDataSource

java.lang.Object
org.apache.ibatis.datasource.pooled.PooledDataSource
All Implemented Interfaces:
Wrapper, CommonDataSource, DataSource

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

    • poolMaximumActiveConnections

      protected int poolMaximumActiveConnections
    • poolMaximumIdleConnections

      protected int poolMaximumIdleConnections
    • poolMaximumCheckoutTime

      protected int poolMaximumCheckoutTime
    • poolTimeToWait

      protected int poolTimeToWait
    • poolMaximumLocalBadConnectionTolerance

      protected int poolMaximumLocalBadConnectionTolerance
    • poolPingQuery

      protected String poolPingQuery
    • poolPingEnabled

      protected boolean poolPingEnabled
    • poolPingConnectionsNotUsedFor

      protected int poolPingConnectionsNotUsedFor
  • Constructor Details

  • Method Details

    • getConnection

      public Connection getConnection() throws SQLException
      Specified by:
      getConnection in interface DataSource
      Throws:
      SQLException
    • getConnection

      public Connection getConnection(String username, String password) throws SQLException
      Specified by:
      getConnection in interface DataSource
      Throws:
      SQLException
    • setLoginTimeout

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

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

      public void setLogWriter(PrintWriter logWriter)
      Specified by:
      setLogWriter in interface CommonDataSource
      Specified by:
      setLogWriter in interface DataSource
    • getLogWriter

      public PrintWriter getLogWriter()
      Specified by:
      getLogWriter in interface CommonDataSource
      Specified by:
      getLogWriter in interface DataSource
    • setDriver

      public void setDriver(String driver)
    • setUrl

      public void setUrl(String url)
    • setUsername

      public void setUsername(String username)
    • setPassword

      public void setPassword(String password)
    • setDefaultAutoCommit

      public void setDefaultAutoCommit(boolean defaultAutoCommit)
    • setDefaultTransactionIsolationLevel

      public void setDefaultTransactionIsolationLevel(Integer defaultTransactionIsolationLevel)
    • setDriverProperties

      public void setDriverProperties(Properties driverProps)
    • setDefaultNetworkTimeout

      public void setDefaultNetworkTimeout(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(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 String getDriver()
    • getUrl

      public String getUrl()
    • getUsername

      public String getUsername()
    • getPassword

      public String getPassword()
    • isAutoCommit

      public boolean isAutoCommit()
    • getDefaultTransactionIsolationLevel

      public Integer getDefaultTransactionIsolationLevel()
    • getDriverProperties

      public Properties getDriverProperties()
    • getDefaultNetworkTimeout

      public Integer getDefaultNetworkTimeout()
      Gets the default network timeout.
      Returns:
      the default network timeout
      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 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 SQLException
      Throws:
      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 Connection unwrapConnection(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 Throwable
      Overrides:
      finalize in class Object
      Throws:
      Throwable
    • unwrap

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

      public boolean isWrapperFor(Class<?> iface)
      Specified by:
      isWrapperFor in interface Wrapper
    • getParentLogger

      public Logger getParentLogger()
      Specified by:
      getParentLogger in interface CommonDataSource