com.mchange.v2.c3p0
Class PoolBackedDataSource

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

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 getNumConnections()
           
 int getNumConnections(java.lang.String username, java.lang.String password)
           
 int getNumConnectionsAllAuths()
           
 int getNumIdleConnections()
           
 int getNumIdleConnections(java.lang.String username, java.lang.String password)
           
 void setLoginTimeout(int seconds)
           
 void setLogWriter(java.io.PrintWriter out)
           
 
Methods inherited from class com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase
addPropertyChangeListener, getConnectionPoolDataSource, getFactoryClassLocation, getNumHelperThreads, getReference, removePropertyChangeListener, setConnectionPoolDataSource, setFactoryClassLocation, setNumHelperThreads, toString
 
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

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

getNumConnectionsAllAuths

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

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