com.ibatis.db.jdbc
Class SimpleDataSource

java.lang.Object
  extended bycom.ibatis.db.jdbc.SimpleDataSource
All Implemented Interfaces:
javax.sql.DataSource

public class SimpleDataSource
extends java.lang.Object
implements javax.sql.DataSource

This is a simple, synchronous, thread-safe database connection pool. REQUIRED PROPERTIES ------------------- JDBC.Driver JDBC.ConnectionURL JDBC.Username JDBC.Password Pool.MaximumActiveConnections Pool.MaximumIdleConnections Pool.MaximumCheckoutTime Pool.TimeToWait Pool.PingQuery Pool.PingEnabled Pool.PingConnectionsOlderThan Pool.PingConnectionsNotUsedFor Pool.QuietMode


Nested Class Summary
private static class SimpleDataSource.SimplePooledConnection
          --------------------------------------------------------------------------------------- SimplePooledConnection ---------------------------------------------------------------------------------------
 
Field Summary
private  long accumulatedCheckoutTime
           
private  long accumulatedCheckoutTimeOfOverdueConnections
           
private  long accumulatedRequestTime
           
private  long accumulatedWaitTime
           
private  java.util.List activeConnections
           
private static java.lang.String ADD_DRIVER_PROPS_PREFIX
           
private static int ADD_DRIVER_PROPS_PREFIX_LENGTH
           
private  long badConnectionCount
           
private  long claimedOverdueConnectionCount
           
private  java.util.Properties driverProps
           
private  int expectedConnectionTypeCode
           
private  long hadToWaitCount
           
private  java.util.List idleConnections
           
private  boolean jdbcDefaultAutoCommit
           
private  java.lang.String jdbcDriver
           
private  java.lang.String jdbcPassword
           
private  java.lang.String jdbcUrl
           
private  java.lang.String jdbcUsername
           
private static org.apache.commons.logging.Log log
           
private static java.lang.Object POOL_LOCK
           
private  int poolMaximumActiveConnections
           
private  int poolMaximumCheckoutTime
           
private  int poolMaximumIdleConnections
           
private  int poolPingConnectionsNotUsedFor
           
private  int poolPingConnectionsOlderThan
           
private  boolean poolPingEnabled
           
private  java.lang.String poolPingQuery
           
private  boolean poolQuietMode
           
private  int poolTimeToWait
           
private static java.lang.String PROP_JDBC_DEFAULT_AUTOCOMMIT
           
private static java.lang.String PROP_JDBC_DRIVER
           
private static java.lang.String PROP_JDBC_PASSWORD
           
private static java.lang.String PROP_JDBC_URL
           
private static java.lang.String PROP_JDBC_USERNAME
           
private static java.lang.String PROP_POOL_MAX_ACTIVE_CONN
           
private static java.lang.String PROP_POOL_MAX_CHECKOUT_TIME
           
private static java.lang.String PROP_POOL_MAX_IDLE_CONN
           
private static java.lang.String PROP_POOL_PING_CONN_NOT_USED_FOR
           
private static java.lang.String PROP_POOL_PING_CONN_OLDER_THAN
           
private static java.lang.String PROP_POOL_PING_ENABLED
           
private static java.lang.String PROP_POOL_PING_QUERY
           
private static java.lang.String PROP_POOL_QUIET_MODE
           
private static java.lang.String PROP_POOL_TIME_TO_WAIT
           
private  long requestCount
           
private  boolean useDriverProps
           
 
Constructor Summary
SimpleDataSource(java.util.Map props)
           
 
Method Summary
private  int assembleConnectionTypeCode(java.lang.String url, java.lang.String username, java.lang.String password)
           
protected  void finalize()
           
 void forceCloseAll()
           
 long getAverageCheckoutTime()
           
 long getAverageOverdueCheckoutTime()
           
 long getAverageRequestTime()
           
 long getAverageWaitTime()
           
 long getBadConnectionCount()
           
 long getClaimedOverdueConnectionCount()
           
 java.sql.Connection getConnection()
           
 java.sql.Connection getConnection(java.lang.String username, java.lang.String password)
           
private  int getExpectedConnectionTypeCode()
           
 long getHadToWaitCount()
           
 java.lang.String getJdbcDriver()
           
 java.lang.String getJdbcPassword()
           
 java.lang.String getJdbcUrl()
           
 java.lang.String getJdbcUsername()
           
 int getLoginTimeout()
           
 java.io.PrintWriter getLogWriter()
           
 int getPoolMaximumActiveConnections()
           
 int getPoolMaximumCheckoutTime()
           
 int getPoolMaximumIdleConnections()
           
 int getPoolPingConnectionsNotUsedFor()
           
 int getPoolPingConnectionsOlderThan()
           
 java.lang.String getPoolPingQuery()
           
 int getPoolTimeToWait()
           
 long getRequestCount()
           
 java.lang.String getStatus()
           
private  void initialize(java.util.Map props)
           
 boolean isPoolPingEnabled()
           
 boolean isPoolQuietMode()
           
private  void log(java.lang.Object o)
           
private  boolean pingConnection(SimpleDataSource.SimplePooledConnection conn)
           
private  SimpleDataSource.SimplePooledConnection popConnection(java.lang.String username, java.lang.String password)
           
private  void pushConnection(SimpleDataSource.SimplePooledConnection conn)
           
 void setLoginTimeout(int loginTimeout)
           
 void setLogWriter(java.io.PrintWriter logWriter)
           
 void setPoolQuietMode(boolean poolQuietMode)
           
static java.sql.Connection unwrapConnection(java.sql.Connection conn)
           
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

private static final org.apache.commons.logging.Log log

PROP_JDBC_DRIVER

private static final java.lang.String PROP_JDBC_DRIVER
See Also:
Constant Field Values

PROP_JDBC_URL

private static final java.lang.String PROP_JDBC_URL
See Also:
Constant Field Values

PROP_JDBC_USERNAME

private static final java.lang.String PROP_JDBC_USERNAME
See Also:
Constant Field Values

PROP_JDBC_PASSWORD

private static final java.lang.String PROP_JDBC_PASSWORD
See Also:
Constant Field Values

PROP_JDBC_DEFAULT_AUTOCOMMIT

private static final java.lang.String PROP_JDBC_DEFAULT_AUTOCOMMIT
See Also:
Constant Field Values

PROP_POOL_MAX_ACTIVE_CONN

private static final java.lang.String PROP_POOL_MAX_ACTIVE_CONN
See Also:
Constant Field Values

PROP_POOL_MAX_IDLE_CONN

private static final java.lang.String PROP_POOL_MAX_IDLE_CONN
See Also:
Constant Field Values

PROP_POOL_MAX_CHECKOUT_TIME

private static final java.lang.String PROP_POOL_MAX_CHECKOUT_TIME
See Also:
Constant Field Values

PROP_POOL_TIME_TO_WAIT

private static final java.lang.String PROP_POOL_TIME_TO_WAIT
See Also:
Constant Field Values

PROP_POOL_PING_QUERY

private static final java.lang.String PROP_POOL_PING_QUERY
See Also:
Constant Field Values

PROP_POOL_PING_CONN_OLDER_THAN

private static final java.lang.String PROP_POOL_PING_CONN_OLDER_THAN
See Also:
Constant Field Values

PROP_POOL_PING_ENABLED

private static final java.lang.String PROP_POOL_PING_ENABLED
See Also:
Constant Field Values

PROP_POOL_QUIET_MODE

private static final java.lang.String PROP_POOL_QUIET_MODE
See Also:
Constant Field Values

PROP_POOL_PING_CONN_NOT_USED_FOR

private static final java.lang.String PROP_POOL_PING_CONN_NOT_USED_FOR
See Also:
Constant Field Values

expectedConnectionTypeCode

private int expectedConnectionTypeCode

ADD_DRIVER_PROPS_PREFIX

private static final java.lang.String ADD_DRIVER_PROPS_PREFIX
See Also:
Constant Field Values

ADD_DRIVER_PROPS_PREFIX_LENGTH

private static final int ADD_DRIVER_PROPS_PREFIX_LENGTH

POOL_LOCK

private static final java.lang.Object POOL_LOCK

idleConnections

private java.util.List idleConnections

activeConnections

private java.util.List activeConnections

requestCount

private long requestCount

accumulatedRequestTime

private long accumulatedRequestTime

accumulatedCheckoutTime

private long accumulatedCheckoutTime

claimedOverdueConnectionCount

private long claimedOverdueConnectionCount

accumulatedCheckoutTimeOfOverdueConnections

private long accumulatedCheckoutTimeOfOverdueConnections

accumulatedWaitTime

private long accumulatedWaitTime

hadToWaitCount

private long hadToWaitCount

badConnectionCount

private long badConnectionCount

jdbcDriver

private java.lang.String jdbcDriver

jdbcUrl

private java.lang.String jdbcUrl

jdbcUsername

private java.lang.String jdbcUsername

jdbcPassword

private java.lang.String jdbcPassword

jdbcDefaultAutoCommit

private boolean jdbcDefaultAutoCommit

driverProps

private java.util.Properties driverProps

useDriverProps

private boolean useDriverProps

poolMaximumActiveConnections

private int poolMaximumActiveConnections

poolMaximumIdleConnections

private int poolMaximumIdleConnections

poolMaximumCheckoutTime

private int poolMaximumCheckoutTime

poolTimeToWait

private int poolTimeToWait

poolPingQuery

private java.lang.String poolPingQuery

poolQuietMode

private boolean poolQuietMode

poolPingEnabled

private boolean poolPingEnabled

poolPingConnectionsOlderThan

private int poolPingConnectionsOlderThan

poolPingConnectionsNotUsedFor

private int poolPingConnectionsNotUsedFor
Constructor Detail

SimpleDataSource

public SimpleDataSource(java.util.Map props)
Method Detail

initialize

private void initialize(java.util.Map props)

assembleConnectionTypeCode

private int assembleConnectionTypeCode(java.lang.String url,
                                       java.lang.String username,
                                       java.lang.String password)

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)
                     throws java.sql.SQLException
Specified by:
setLoginTimeout in interface javax.sql.DataSource
Throws:
java.sql.SQLException

getLoginTimeout

public int getLoginTimeout()
                    throws java.sql.SQLException
Specified by:
getLoginTimeout in interface javax.sql.DataSource
Throws:
java.sql.SQLException

setLogWriter

public void setLogWriter(java.io.PrintWriter logWriter)
                  throws java.sql.SQLException
Specified by:
setLogWriter in interface javax.sql.DataSource
Throws:
java.sql.SQLException

getLogWriter

public java.io.PrintWriter getLogWriter()
                                 throws java.sql.SQLException
Specified by:
getLogWriter in interface javax.sql.DataSource
Throws:
java.sql.SQLException

getPoolPingConnectionsNotUsedFor

public int getPoolPingConnectionsNotUsedFor()

getJdbcDriver

public java.lang.String getJdbcDriver()

getJdbcUrl

public java.lang.String getJdbcUrl()

getJdbcUsername

public java.lang.String getJdbcUsername()

getJdbcPassword

public java.lang.String getJdbcPassword()

getPoolMaximumActiveConnections

public int getPoolMaximumActiveConnections()

getPoolMaximumIdleConnections

public int getPoolMaximumIdleConnections()

getPoolMaximumCheckoutTime

public int getPoolMaximumCheckoutTime()

getPoolTimeToWait

public int getPoolTimeToWait()

getPoolPingQuery

public java.lang.String getPoolPingQuery()

isPoolPingEnabled

public boolean isPoolPingEnabled()

getPoolPingConnectionsOlderThan

public int getPoolPingConnectionsOlderThan()

isPoolQuietMode

public boolean isPoolQuietMode()

log

private void log(java.lang.Object o)

setPoolQuietMode

public void setPoolQuietMode(boolean poolQuietMode)

getExpectedConnectionTypeCode

private int getExpectedConnectionTypeCode()

getRequestCount

public long getRequestCount()

getAverageRequestTime

public long getAverageRequestTime()

getAverageWaitTime

public long getAverageWaitTime()

getHadToWaitCount

public long getHadToWaitCount()

getBadConnectionCount

public long getBadConnectionCount()

getClaimedOverdueConnectionCount

public long getClaimedOverdueConnectionCount()

getAverageOverdueCheckoutTime

public long getAverageOverdueCheckoutTime()

getAverageCheckoutTime

public long getAverageCheckoutTime()

getStatus

public java.lang.String getStatus()

forceCloseAll

public void forceCloseAll()

pushConnection

private void pushConnection(SimpleDataSource.SimplePooledConnection conn)
                     throws java.sql.SQLException
Throws:
java.sql.SQLException

popConnection

private SimpleDataSource.SimplePooledConnection popConnection(java.lang.String username,
                                                              java.lang.String password)
                                                       throws java.sql.SQLException
Throws:
java.sql.SQLException

pingConnection

private boolean pingConnection(SimpleDataSource.SimplePooledConnection conn)

unwrapConnection

public static java.sql.Connection unwrapConnection(java.sql.Connection conn)

finalize

protected void finalize()
                 throws java.lang.Throwable
Throws:
java.lang.Throwable