com.mchange.v2.c3p0
Class PoolBackedDataSource

java.lang.Object
  extended by com.mchange.v2.c3p0.impl.IdentityTokenResolvable
      extended by com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase
          extended by com.mchange.v2.c3p0.PoolBackedDataSource
All Implemented Interfaces:
com.mchange.v2.c3p0.impl.IdentityTokenized, PooledDataSource, java.io.Serializable, javax.naming.Referenceable, javax.sql.DataSource

public final class PoolBackedDataSource
extends com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase
implements PooledDataSource

See Also:
Serialized Form

Field Summary
 
Fields inherited from class com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase
pcs
 
Constructor Summary
PoolBackedDataSource()
           
 
Method Summary
 void close()
          C3P0 pooled DataSources use no resources before they are actually used in a VM, and they close themselves in their finalize() method.
 void close(boolean force_destroy)
          Should be used only with great caution.
 java.sql.Connection getConnection()
           
 java.sql.Connection getConnection(java.lang.String username, java.lang.String password)
           
 int getLoginTimeout()
           
 java.io.PrintWriter getLogWriter()
           
 int getNumBusyConnections()
           
 int getNumBusyConnections(java.lang.String username, java.lang.String password)
           
 int getNumBusyConnectionsAllUsers()
           
 int getNumBusyConnectionsDefaultUser()
           
 int getNumConnections()
           
 int getNumConnections(java.lang.String username, java.lang.String password)
           
 int getNumConnectionsAllUsers()
           
 int getNumConnectionsDefaultUser()
           
 int getNumIdleConnections()
           
 int getNumIdleConnections(java.lang.String username, java.lang.String password)
           
 int getNumIdleConnectionsAllUsers()
           
 int getNumIdleConnectionsDefaultUser()
           
 int getNumUnclosedOrphanedConnections()
           
 int getNumUnclosedOrphanedConnections(java.lang.String username, java.lang.String password)
           
 int getNumUnclosedOrphanedConnectionsAllUsers()
           
 int getNumUnclosedOrphanedConnectionsDefaultUser()
           
 int getNumUserPools()
           
 void hardReset()
          Destroys all pooled and checked-out Connections associated with this DataSource immediately.
 void resetPoolManager()
           
 void setLoginTimeout(int seconds)
           
 void setLogWriter(java.io.PrintWriter out)
           
 void softReset(java.lang.String username, java.lang.String password)
          Discards all Connections managed by the PooledDataSource with the specified authentication credentials and reacquires new Connections to populate.
 void softResetAllUsers()
          Discards all Connections managed by the PooledDataSource and reacquires new Connections to populate.
 void softResetDefaultUser()
          Discards all Connections managed by the PooledDataSource's default-authentication pool and reacquires new Connections to populate.
 
Methods inherited from class com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase
addPropertyChangeListener, addPropertyChangeListener, getConnectionPoolDataSource, getFactoryClassLocation, getIdentityToken, getNumHelperThreads, getPropertyChangeSupport, getReference, removePropertyChangeListener, removePropertyChangeListener, setConnectionPoolDataSource, setFactoryClassLocation, setIdentityToken, setNumHelperThreads, toString
 
Methods inherited from class com.mchange.v2.c3p0.impl.IdentityTokenResolvable
doResolve, readResolve, verifyResolve
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PoolBackedDataSource

public PoolBackedDataSource()
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

getLogWriter

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

setLogWriter

public void setLogWriter(java.io.PrintWriter out)
                  throws java.sql.SQLException
Specified by:
setLogWriter 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

setLoginTimeout

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

getNumConnections

public int getNumConnections()
                      throws java.sql.SQLException
Specified by:
getNumConnections in interface PooledDataSource
Throws:
java.sql.SQLException

getNumIdleConnections

public int getNumIdleConnections()
                          throws java.sql.SQLException
Specified by:
getNumIdleConnections in interface PooledDataSource
Throws:
java.sql.SQLException

getNumBusyConnections

public int getNumBusyConnections()
                          throws java.sql.SQLException
Specified by:
getNumBusyConnections in interface PooledDataSource
Throws:
java.sql.SQLException

getNumUnclosedOrphanedConnections

public int getNumUnclosedOrphanedConnections()
                                      throws java.sql.SQLException
Specified by:
getNumUnclosedOrphanedConnections in interface PooledDataSource
Throws:
java.sql.SQLException

getNumConnectionsDefaultUser

public int getNumConnectionsDefaultUser()
                                 throws java.sql.SQLException
Specified by:
getNumConnectionsDefaultUser in interface PooledDataSource
Throws:
java.sql.SQLException

getNumIdleConnectionsDefaultUser

public int getNumIdleConnectionsDefaultUser()
                                     throws java.sql.SQLException
Specified by:
getNumIdleConnectionsDefaultUser in interface PooledDataSource
Throws:
java.sql.SQLException

getNumBusyConnectionsDefaultUser

public int getNumBusyConnectionsDefaultUser()
                                     throws java.sql.SQLException
Specified by:
getNumBusyConnectionsDefaultUser in interface PooledDataSource
Throws:
java.sql.SQLException

getNumUnclosedOrphanedConnectionsDefaultUser

public int getNumUnclosedOrphanedConnectionsDefaultUser()
                                                 throws java.sql.SQLException
Specified by:
getNumUnclosedOrphanedConnectionsDefaultUser in interface PooledDataSource
Throws:
java.sql.SQLException

softResetDefaultUser

public void softResetDefaultUser()
                          throws java.sql.SQLException
Description copied from interface: PooledDataSource
Discards all Connections managed by the PooledDataSource's default-authentication pool and reacquires new Connections to populate. Current checked out Connections will still be valid, and should still be checked into the PooledDataSource (so the PooledDataSource can destroy them).

Specified by:
softResetDefaultUser in interface PooledDataSource
Throws:
java.sql.SQLException

getNumConnections

public int getNumConnections(java.lang.String username,
                             java.lang.String password)
                      throws java.sql.SQLException
Specified by:
getNumConnections in interface PooledDataSource
Throws:
java.sql.SQLException

getNumIdleConnections

public int getNumIdleConnections(java.lang.String username,
                                 java.lang.String password)
                          throws java.sql.SQLException
Specified by:
getNumIdleConnections in interface PooledDataSource
Throws:
java.sql.SQLException

getNumBusyConnections

public int getNumBusyConnections(java.lang.String username,
                                 java.lang.String password)
                          throws java.sql.SQLException
Specified by:
getNumBusyConnections in interface PooledDataSource
Throws:
java.sql.SQLException

getNumUnclosedOrphanedConnections

public int getNumUnclosedOrphanedConnections(java.lang.String username,
                                             java.lang.String password)
                                      throws java.sql.SQLException
Specified by:
getNumUnclosedOrphanedConnections in interface PooledDataSource
Throws:
java.sql.SQLException

softReset

public void softReset(java.lang.String username,
                      java.lang.String password)
               throws java.sql.SQLException
Description copied from interface: PooledDataSource
Discards all Connections managed by the PooledDataSource with the specified authentication credentials and reacquires new Connections to populate. Current checked out Connections will still be valid, and should still be checked into the PooledDataSource (so the PooledDataSource can destroy them).

Specified by:
softReset in interface PooledDataSource
Throws:
java.sql.SQLException

getNumBusyConnectionsAllUsers

public int getNumBusyConnectionsAllUsers()
                                  throws java.sql.SQLException
Specified by:
getNumBusyConnectionsAllUsers in interface PooledDataSource
Throws:
java.sql.SQLException

getNumIdleConnectionsAllUsers

public int getNumIdleConnectionsAllUsers()
                                  throws java.sql.SQLException
Specified by:
getNumIdleConnectionsAllUsers in interface PooledDataSource
Throws:
java.sql.SQLException

getNumConnectionsAllUsers

public int getNumConnectionsAllUsers()
                              throws java.sql.SQLException
Specified by:
getNumConnectionsAllUsers in interface PooledDataSource
Throws:
java.sql.SQLException

getNumUnclosedOrphanedConnectionsAllUsers

public int getNumUnclosedOrphanedConnectionsAllUsers()
                                              throws java.sql.SQLException
Specified by:
getNumUnclosedOrphanedConnectionsAllUsers in interface PooledDataSource
Throws:
java.sql.SQLException

softResetAllUsers

public void softResetAllUsers()
                       throws java.sql.SQLException
Description copied from interface: PooledDataSource
Discards all Connections managed by the PooledDataSource and reacquires new Connections to populate. Current checked out Connections will still be valid, and should still be checked into the PooledDataSource (so the PooledDataSource can destroy them).

Specified by:
softResetAllUsers in interface PooledDataSource
Throws:
java.sql.SQLException

getNumUserPools

public int getNumUserPools()
                    throws java.sql.SQLException
Specified by:
getNumUserPools in interface PooledDataSource
Throws:
java.sql.SQLException

hardReset

public void hardReset()
Description copied from interface: PooledDataSource
Destroys all pooled and checked-out Connections associated with this DataSource immediately. The PooledDataSource is reset to its initial state prior to first Connection acquisition, with no pools yet active, but ready for requests.

Specified by:
hardReset in interface PooledDataSource

close

public void close()
Description copied from interface: PooledDataSource

C3P0 pooled DataSources use no resources before they are actually used in a VM, and they close themselves in their finalize() method. When they are active and pooling, they may have open database connections and their pool may spawn several threads for its maintenance. You can use this method to clean these resource methods up quickly when you will no longer be using this DataSource. The resources will actually be cleaned up only if no other DataSources are sharing the same pool.

You can equivalently use the static method destroy() in the DataSources class to clean-up these resources.

This is equivalent to calling close( false ).

Specified by:
close in interface PooledDataSource
See Also:
DataSources.destroy(javax.sql.DataSource)

close

public void close(boolean force_destroy)
Description copied from interface: PooledDataSource

Should be used only with great caution. If force_destroy is set to true, this immediately destroys any pool and cleans up all resources this DataSource may be using, even if other DataSources are sharing that pool! In general, it is difficult to know whether a pool is being shared by multiple DataSources. It may depend upon whether or not a JNDI implementation returns a single instance or multiple copies upon lookup (which is undefined by the JNDI spec).

In general, this method should be used only when you wish to wind down all c3p0 pools in a ClassLoader. For example, when shutting down and restarting a web application that uses c3p0, you may wish to kill all threads making use of classes loaded by a web-app specific ClassLoader, so that the ClassLoader can be cleanly garbage collected. In this case, you may wish to use force destroy. Otherwise, it is much safer to use the simple destroy() method, which will not shut down pools that may still be in use.

To close a pool normally, use the no argument close method, or set force_destroy to false.

Specified by:
close in interface PooledDataSource
See Also:
PooledDataSource.close()

resetPoolManager

public void resetPoolManager()