org.apache.avalon.excalibur.datasource
Class JdbcConnectionPool

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.avalon.excalibur.pool.AbstractPool
          extended by org.apache.avalon.excalibur.pool.DefaultPool
              extended by org.apache.avalon.excalibur.pool.SoftResourceLimitingPool
                  extended by org.apache.avalon.excalibur.pool.HardResourceLimitingPool
                      extended by org.apache.avalon.excalibur.datasource.JdbcConnectionPool
All Implemented Interfaces:
java.lang.Runnable, org.apache.avalon.excalibur.pool.Pool, org.apache.avalon.excalibur.pool.Resizable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.activity.Initializable, org.apache.avalon.framework.logger.LogEnabled, org.apache.avalon.framework.thread.ThreadSafe

public class JdbcConnectionPool
extends org.apache.avalon.excalibur.pool.HardResourceLimitingPool
implements java.lang.Runnable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.activity.Initializable

The Pool implementation for JdbcConnections. It uses a background thread to manage the number of SQL Connections.

Since:
4.0
Version:
CVS $Revision: 1.5 $ $Date: 2004/04/02 11:08:12 $
Author:
Avalon Development Team

Field Summary
private  boolean m_autoCommit
           
private  java.lang.Exception m_cause
           
private  java.lang.Thread m_initThread
           
private  boolean m_noConnections
           
private  java.lang.Object m_spinLock
           
private  long m_wait
           
 
Fields inherited from class org.apache.avalon.excalibur.pool.DefaultPool
m_controller, m_disposed, m_max, m_min, m_quickFail
 
Fields inherited from class org.apache.avalon.excalibur.pool.AbstractPool
DEFAULT_POOL_SIZE, m_active, m_factory, m_initialized, m_mutex, m_ready
 
Constructor Summary
JdbcConnectionPool(JdbcConnectionFactory factory, org.apache.avalon.excalibur.pool.DefaultPoolController controller, int min, int max, boolean autoCommit)
           
 
Method Summary
 org.apache.avalon.excalibur.pool.Poolable get()
           
 void initialize()
           
protected  org.apache.avalon.excalibur.pool.Poolable newPoolable()
           
 void put(org.apache.avalon.excalibur.pool.Poolable obj)
           
 void run()
           
 void setTimeout(long timeout)
          Set the timeout in milliseconds for blocking when waiting for a new connection.
 
Methods inherited from class org.apache.avalon.excalibur.pool.HardResourceLimitingPool
internalGrow
 
Methods inherited from class org.apache.avalon.excalibur.pool.SoftResourceLimitingPool
grow, shrink
 
Methods inherited from class org.apache.avalon.excalibur.pool.DefaultPool
dispose
 
Methods inherited from class org.apache.avalon.excalibur.pool.AbstractPool
internalShrink, lock, removePoolable, size, unlock
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.avalon.framework.activity.Disposable
dispose
 

Field Detail

m_cause

private java.lang.Exception m_cause

m_initThread

private java.lang.Thread m_initThread

m_autoCommit

private final boolean m_autoCommit

m_noConnections

private boolean m_noConnections

m_wait

private long m_wait

m_spinLock

private java.lang.Object m_spinLock
Constructor Detail

JdbcConnectionPool

public JdbcConnectionPool(JdbcConnectionFactory factory,
                          org.apache.avalon.excalibur.pool.DefaultPoolController controller,
                          int min,
                          int max,
                          boolean autoCommit)
                   throws java.lang.Exception
Throws:
java.lang.Exception
Method Detail

setTimeout

public void setTimeout(long timeout)
Set the timeout in milliseconds for blocking when waiting for a new connection. It defaults to -1. Any number below 1 means that there is no blocking, and the Pool fails hard. Any number above 0 means we will wait for that length of time before failing.


initialize

public void initialize()
Specified by:
initialize in interface org.apache.avalon.framework.activity.Initializable
Overrides:
initialize in class org.apache.avalon.excalibur.pool.HardResourceLimitingPool

newPoolable

protected final org.apache.avalon.excalibur.pool.Poolable newPoolable()
                                                               throws java.lang.Exception
Overrides:
newPoolable in class org.apache.avalon.excalibur.pool.HardResourceLimitingPool
Throws:
java.lang.Exception

get

public org.apache.avalon.excalibur.pool.Poolable get()
                                              throws java.lang.Exception
Specified by:
get in interface org.apache.avalon.excalibur.pool.Pool
Overrides:
get in class org.apache.avalon.excalibur.pool.DefaultPool
Throws:
java.lang.Exception

put

public void put(org.apache.avalon.excalibur.pool.Poolable obj)
Specified by:
put in interface org.apache.avalon.excalibur.pool.Pool
Overrides:
put in class org.apache.avalon.excalibur.pool.DefaultPool

run

public void run()
Specified by:
run in interface java.lang.Runnable