com.ibatis.common.jdbc
Class SimpleDataSource

java.lang.Object
  extended bycom.ibatis.common.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


Constructor Summary
SimpleDataSource(java.util.Map props)
          Constructor to allow passing in a map of properties for configuration
 
Method Summary
protected  void finalize()
           
 void forceCloseAll()
          Closes all of the connections in the pool
 long getAverageCheckoutTime()
          Getter for the average age of a connection checkout
 long getAverageOverdueCheckoutTime()
          Getter for the average age of overdue connections
 long getAverageRequestTime()
          Getter for the average time required to get a connection to the database
 long getAverageWaitTime()
          Getter for the average time spent waiting for connections that were in use
 long getBadConnectionCount()
          Getter for the number of invalid connections that were found in the pool
 long getClaimedOverdueConnectionCount()
          Getter for the number of connections that were claimed before they were returned
 java.sql.Connection getConnection()
           
 java.sql.Connection getConnection(java.lang.String username, java.lang.String password)
           
 long getHadToWaitCount()
          Getter for the number of requests that had to wait for connections that were in use
 java.lang.String getJdbcDriver()
          Getter for the name of the JDBC driver class used
 java.lang.String getJdbcPassword()
          Getter for the JDBC password used
 java.lang.String getJdbcUrl()
          Getter of the JDBC URL used
 java.lang.String getJdbcUsername()
          Getter for the JDBC user name used
 int getLoginTimeout()
           
 java.io.PrintWriter getLogWriter()
           
 int getPoolMaximumActiveConnections()
          Getter for the maximum number of active connections
 int getPoolMaximumCheckoutTime()
          Getter for the maximum time a connection can be used before it *may* be given away again.
 int getPoolMaximumIdleConnections()
          Getter for the maximum number of idle connections
 int getPoolPingConnectionsNotUsedFor()
          If a connection has not been used in this many milliseconds, ping the database to make sure the connection is still good.
 int getPoolPingConnectionsOlderThan()
          Getter for the age of connections that should be pinged before using
 java.lang.String getPoolPingQuery()
          Getter for the query to be used to check a connection
 int getPoolTimeToWait()
          Getter for the time to wait before retrying to get a connection
 long getRequestCount()
          Getter for the number of connection requests made
 java.lang.String getStatus()
          Returns the status of the connection pool
 boolean isPoolPingEnabled()
          Getter to tell if we should use the ping query
 void setLoginTimeout(int loginTimeout)
           
 void setLogWriter(java.io.PrintWriter logWriter)
           
static java.sql.Connection unwrapConnection(java.sql.Connection conn)
          Unwraps a pooled connection to get to the 'real' connection
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SimpleDataSource

public SimpleDataSource(java.util.Map props)
Constructor to allow passing in a map of properties for configuration

Parameters:
props - - the configuration parameters
Method Detail

getConnection

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

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
See Also:
DataSource.getConnection(java.lang.String, java.lang.String)

setLoginTimeout

public void setLoginTimeout(int loginTimeout)
                     throws java.sql.SQLException
Specified by:
setLoginTimeout in interface javax.sql.DataSource
Throws:
java.sql.SQLException
See Also:
DataSource.setLoginTimeout(int)

getLoginTimeout

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

setLogWriter

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

getLogWriter

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

getPoolPingConnectionsNotUsedFor

public int getPoolPingConnectionsNotUsedFor()
If a connection has not been used in this many milliseconds, ping the database to make sure the connection is still good.

Returns:
the number of milliseconds of inactivity that will trigger a ping

getJdbcDriver

public java.lang.String getJdbcDriver()
Getter for the name of the JDBC driver class used

Returns:
The name of the class

getJdbcUrl

public java.lang.String getJdbcUrl()
Getter of the JDBC URL used

Returns:
The JDBC URL

getJdbcUsername

public java.lang.String getJdbcUsername()
Getter for the JDBC user name used

Returns:
The user name

getJdbcPassword

public java.lang.String getJdbcPassword()
Getter for the JDBC password used

Returns:
The password

getPoolMaximumActiveConnections

public int getPoolMaximumActiveConnections()
Getter for the maximum number of active connections

Returns:
The maximum number of active connections

getPoolMaximumIdleConnections

public int getPoolMaximumIdleConnections()
Getter for the maximum number of idle connections

Returns:
The maximum number of idle connections

getPoolMaximumCheckoutTime

public int getPoolMaximumCheckoutTime()
Getter for the maximum time a connection can be used before it *may* be given away again.

Returns:
The maximum time

getPoolTimeToWait

public int getPoolTimeToWait()
Getter for the time to wait before retrying to get a connection

Returns:
The time to wait

getPoolPingQuery

public java.lang.String getPoolPingQuery()
Getter for the query to be used to check a connection

Returns:
The query

isPoolPingEnabled

public boolean isPoolPingEnabled()
Getter to tell if we should use the ping query

Returns:
True if we need to check a connection before using it

getPoolPingConnectionsOlderThan

public int getPoolPingConnectionsOlderThan()
Getter for the age of connections that should be pinged before using

Returns:
The age

getRequestCount

public long getRequestCount()
Getter for the number of connection requests made

Returns:
The number of connection requests made

getAverageRequestTime

public long getAverageRequestTime()
Getter for the average time required to get a connection to the database

Returns:
The average time

getAverageWaitTime

public long getAverageWaitTime()
Getter for the average time spent waiting for connections that were in use

Returns:
The average time

getHadToWaitCount

public long getHadToWaitCount()
Getter for the number of requests that had to wait for connections that were in use

Returns:
The number of requests that had to wait

getBadConnectionCount

public long getBadConnectionCount()
Getter for the number of invalid connections that were found in the pool

Returns:
The number of invalid connections

getClaimedOverdueConnectionCount

public long getClaimedOverdueConnectionCount()
Getter for the number of connections that were claimed before they were returned

Returns:
The number of connections

getAverageOverdueCheckoutTime

public long getAverageOverdueCheckoutTime()
Getter for the average age of overdue connections

Returns:
The average age

getAverageCheckoutTime

public long getAverageCheckoutTime()
Getter for the average age of a connection checkout

Returns:
The average age

getStatus

public java.lang.String getStatus()
Returns the status of the connection pool

Returns:
The status

forceCloseAll

public void forceCloseAll()
Closes all of the connections in the pool


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
Throws:
java.lang.Throwable