Class PooledDataSource
- java.lang.Object
-
- org.apache.ibatis.datasource.pooled.PooledDataSource
-
- All Implemented Interfaces:
java.sql.Wrapper,javax.sql.CommonDataSource,javax.sql.DataSource
public class PooledDataSource extends java.lang.Object implements javax.sql.DataSourceThis is a simple, synchronous, thread-safe database connection pool.- Author:
- Clinton Begin
-
-
Field Summary
Fields Modifier and Type Field Description protected intpoolMaximumActiveConnectionsprotected intpoolMaximumCheckoutTimeprotected intpoolMaximumIdleConnectionsprotected intpoolMaximumLocalBadConnectionToleranceprotected intpoolPingConnectionsNotUsedForprotected booleanpoolPingEnabledprotected java.lang.StringpoolPingQueryprotected intpoolTimeToWait
-
Constructor Summary
Constructors Constructor Description PooledDataSource()PooledDataSource(java.lang.ClassLoader driverClassLoader, java.lang.String driver, java.lang.String url, java.lang.String username, java.lang.String password)PooledDataSource(java.lang.ClassLoader driverClassLoader, java.lang.String driver, java.lang.String url, java.util.Properties driverProperties)PooledDataSource(java.lang.String driver, java.lang.String url, java.lang.String username, java.lang.String password)PooledDataSource(java.lang.String driver, java.lang.String url, java.util.Properties driverProperties)PooledDataSource(UnpooledDataSource dataSource)
-
Method Summary
Modifier and Type Method Description protected voidfinalize()voidforceCloseAll()Closes all active and idle connections in the pool.java.sql.ConnectiongetConnection()java.sql.ConnectiongetConnection(java.lang.String username, java.lang.String password)java.lang.IntegergetDefaultNetworkTimeout()java.lang.IntegergetDefaultTransactionIsolationLevel()java.lang.StringgetDriver()java.util.PropertiesgetDriverProperties()intgetLoginTimeout()java.io.PrintWritergetLogWriter()java.util.logging.LoggergetParentLogger()java.lang.StringgetPassword()intgetPoolMaximumActiveConnections()intgetPoolMaximumCheckoutTime()intgetPoolMaximumIdleConnections()intgetPoolMaximumLocalBadConnectionTolerance()intgetPoolPingConnectionsNotUsedFor()java.lang.StringgetPoolPingQuery()PoolStategetPoolState()intgetPoolTimeToWait()java.lang.StringgetUrl()java.lang.StringgetUsername()booleanisAutoCommit()booleanisPoolPingEnabled()booleanisWrapperFor(java.lang.Class<?> iface)protected booleanpingConnection(org.apache.ibatis.datasource.pooled.PooledConnection conn)Method to check to see if a connection is still usableprotected voidpushConnection(org.apache.ibatis.datasource.pooled.PooledConnection conn)voidsetDefaultAutoCommit(boolean defaultAutoCommit)voidsetDefaultNetworkTimeout(java.lang.Integer milliseconds)Sets the default network timeout value to wait for the database operation to complete.voidsetDefaultTransactionIsolationLevel(java.lang.Integer defaultTransactionIsolationLevel)voidsetDriver(java.lang.String driver)voidsetDriverProperties(java.util.Properties driverProps)voidsetLoginTimeout(int loginTimeout)voidsetLogWriter(java.io.PrintWriter logWriter)voidsetPassword(java.lang.String password)voidsetPoolMaximumActiveConnections(int poolMaximumActiveConnections)The maximum number of active connections.voidsetPoolMaximumCheckoutTime(int poolMaximumCheckoutTime)The maximum time a connection can be used before it *may* be given away again.voidsetPoolMaximumIdleConnections(int poolMaximumIdleConnections)The maximum number of idle connections.voidsetPoolMaximumLocalBadConnectionTolerance(int poolMaximumLocalBadConnectionTolerance)The maximum number of tolerance for bad connection happens in one thread which are applying for newPooledConnection.voidsetPoolPingConnectionsNotUsedFor(int milliseconds)If a connection has not been used in this many milliseconds, ping the database to make sure the connection is still good.voidsetPoolPingEnabled(boolean poolPingEnabled)Determines if the ping query should be used.voidsetPoolPingQuery(java.lang.String poolPingQuery)The query to be used to check a connection.voidsetPoolTimeToWait(int poolTimeToWait)The time to wait before retrying to get a connection.voidsetUrl(java.lang.String url)voidsetUsername(java.lang.String username)<T> Tunwrap(java.lang.Class<T> iface)static java.sql.ConnectionunwrapConnection(java.sql.Connection conn)Unwraps a pooled connection to get to the 'real' connection
-
-
-
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(UnpooledDataSource dataSource)
-
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:
getConnectionin interfacejavax.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:
getConnectionin interfacejavax.sql.DataSource- Throws:
java.sql.SQLException
-
setLoginTimeout
public void setLoginTimeout(int loginTimeout)
- Specified by:
setLoginTimeoutin interfacejavax.sql.CommonDataSource- Specified by:
setLoginTimeoutin interfacejavax.sql.DataSource
-
getLoginTimeout
public int getLoginTimeout()
- Specified by:
getLoginTimeoutin interfacejavax.sql.CommonDataSource- Specified by:
getLoginTimeoutin interfacejavax.sql.DataSource
-
setLogWriter
public void setLogWriter(java.io.PrintWriter logWriter)
- Specified by:
setLogWriterin interfacejavax.sql.CommonDataSource- Specified by:
setLogWriterin interfacejavax.sql.DataSource
-
getLogWriter
public java.io.PrintWriter getLogWriter()
- Specified by:
getLogWriterin interfacejavax.sql.CommonDataSource- Specified by:
getLogWriterin interfacejavax.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. SeeConnection.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 newPooledConnection.- 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:
finalizein classjava.lang.Object- Throws:
java.lang.Throwable
-
unwrap
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException- Specified by:
unwrapin interfacejava.sql.Wrapper- Throws:
java.sql.SQLException
-
isWrapperFor
public boolean isWrapperFor(java.lang.Class<?> iface)
- Specified by:
isWrapperForin interfacejava.sql.Wrapper
-
getParentLogger
public java.util.logging.Logger getParentLogger()
- Specified by:
getParentLoggerin interfacejavax.sql.CommonDataSource
-
-