org.apache.xalan.lib.sql
Class DefaultConnectionPool

java.lang.Object
  extended by org.apache.xalan.lib.sql.DefaultConnectionPool
All Implemented Interfaces:
ConnectionPool

public class DefaultConnectionPool
extends java.lang.Object
implements ConnectionPool

For internal connectiones, i.e. Connection information supplies in the Stylesheet. The Default Connection Pool will be used.


Field Summary
private static boolean DEBUG
           
private  java.util.Properties m_ConnectionProtocol
          Always implement the properties mechinism, if the Password or Username is set seperatly then we will add them to the property manually.
private  java.lang.String m_driver
          The basic information to make a JDBC Connection
private  java.sql.Driver m_Driver
          A placeholder thast will keep the driver loaded between calls.
private  boolean m_IsActive
          Are we active ??
private  java.util.Vector m_pool
          Storage for the PooledConnections
private  int m_PoolMinSize
          The mimimum size of the connection pool, if the number of available connections falls below this mark, min connections will be allocated.
private  java.lang.String m_url
           
 
Constructor Summary
DefaultConnectionPool()
           
 
Method Summary
private  void addConnection(PooledConnection value)
           
private  java.sql.Connection createConnection()
           
protected  void finalize()
           
 void freeUnused()
          Go through the connection pool and release any connections that are not InUse;
 java.sql.Connection getConnection()
          Retrive a database connection from the pool
 boolean hasActiveConnections()
          Is our ConnectionPool have any connections that are still in Use ??
 void initializePool()
           
 boolean isEnabled()
          Return our current Active state
 void releaseConnection(java.sql.Connection con)
          Return a connection to the pool, the connection may be closed if the pool is inactive or has exceeded the max number of free connections
 void releaseConnectionOnError(java.sql.Connection con)
          Provide a mechinism to return a connection to the pool on Error.
 void setDriver(java.lang.String d)
          Set the driver call to be used to create connections
 void setMinConnections(int n)
          Override the current number of connections to keep in the pool.
 void setPassword(java.lang.String p)
          Set the password in the property set.
 void setPoolEnabled(boolean flag)
          The Pool can be Enabled and Disabled.
 void setProtocol(java.util.Properties p)
          The Protocol string is used to pass in other connection properties.
 void setURL(java.lang.String url)
          Set the url used to connect to the database
 void setUser(java.lang.String u)
          Set the user name in the property set
 boolean testConnection()
          Try to aquire a new connection, if it succeeds then return true, else return false.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_Driver

private java.sql.Driver m_Driver
A placeholder thast will keep the driver loaded between calls.


DEBUG

private static final boolean DEBUG
See Also:
Constant Field Values

m_driver

private java.lang.String m_driver
The basic information to make a JDBC Connection


m_url

private java.lang.String m_url

m_PoolMinSize

private int m_PoolMinSize
The mimimum size of the connection pool, if the number of available connections falls below this mark, min connections will be allocated. The Connection Pool will always be somewhere between MinSize and MinSize*2


m_ConnectionProtocol

private java.util.Properties m_ConnectionProtocol
Always implement the properties mechinism, if the Password or Username is set seperatly then we will add them to the property manually.


m_pool

private java.util.Vector m_pool
Storage for the PooledConnections


m_IsActive

private boolean m_IsActive
Are we active ??

Constructor Detail

DefaultConnectionPool

public DefaultConnectionPool()
Method Detail

isEnabled

public boolean isEnabled()
Return our current Active state

Specified by:
isEnabled in interface ConnectionPool

setDriver

public void setDriver(java.lang.String d)
Set the driver call to be used to create connections

Specified by:
setDriver in interface ConnectionPool
Parameters:
d -

setURL

public void setURL(java.lang.String url)
Set the url used to connect to the database

Specified by:
setURL in interface ConnectionPool
Parameters:
url -

freeUnused

public void freeUnused()
Go through the connection pool and release any connections that are not InUse;

Specified by:
freeUnused in interface ConnectionPool

hasActiveConnections

public boolean hasActiveConnections()
Is our ConnectionPool have any connections that are still in Use ??

Specified by:
hasActiveConnections in interface ConnectionPool

setPassword

public void setPassword(java.lang.String p)
Set the password in the property set.

Specified by:
setPassword in interface ConnectionPool
Parameters:
p -

setUser

public void setUser(java.lang.String u)
Set the user name in the property set

Specified by:
setUser in interface ConnectionPool
Parameters:
u -

setProtocol

public void setProtocol(java.util.Properties p)
The Protocol string is used to pass in other connection properties. A properties file is a general purpose container

Specified by:
setProtocol in interface ConnectionPool
Parameters:
p -

setMinConnections

public void setMinConnections(int n)
Override the current number of connections to keep in the pool. This setting will only have effect on a new pool or when a new connection is requested and there is less connections that this setting.

Specified by:
setMinConnections in interface ConnectionPool
Parameters:
n -

testConnection

public boolean testConnection()
Try to aquire a new connection, if it succeeds then return true, else return false. Note: This method will cause the connection pool to be built.

Specified by:
testConnection in interface ConnectionPool

getConnection

public java.sql.Connection getConnection()
                                  throws java.lang.IllegalArgumentException,
                                         java.sql.SQLException
Description copied from interface: ConnectionPool
Retrive a database connection from the pool

Specified by:
getConnection in interface ConnectionPool
Returns:
Connection
Throws:
java.sql.SQLException
java.lang.IllegalArgumentException

releaseConnection

public void releaseConnection(java.sql.Connection con)
                       throws java.sql.SQLException
Description copied from interface: ConnectionPool
Return a connection to the pool, the connection may be closed if the pool is inactive or has exceeded the max number of free connections

Specified by:
releaseConnection in interface ConnectionPool
Parameters:
con -
Throws:
java.sql.SQLException

releaseConnectionOnError

public void releaseConnectionOnError(java.sql.Connection con)
                              throws java.sql.SQLException
Description copied from interface: ConnectionPool
Provide a mechinism to return a connection to the pool on Error. A good default behaviour is to close this connection and build a new one to replace it. Some JDBC impl's won't allow you to reuse a connection after an error occurs.

Specified by:
releaseConnectionOnError in interface ConnectionPool
Parameters:
con -
Throws:
java.sql.SQLException

createConnection

private java.sql.Connection createConnection()
                                      throws java.sql.SQLException
Throws:
java.sql.SQLException

initializePool

public void initializePool()
                    throws java.lang.IllegalArgumentException,
                           java.sql.SQLException
Throws:
java.lang.IllegalArgumentException
java.sql.SQLException

addConnection

private void addConnection(PooledConnection value)
Parameters:
value -

finalize

protected void finalize()
                 throws java.lang.Throwable
Overrides:
finalize in class java.lang.Object
Throws:
java.lang.Throwable

setPoolEnabled

public void setPoolEnabled(boolean flag)
The Pool can be Enabled and Disabled. Disabling the pool closes all the outstanding Unused connections and any new connections will be closed upon release.

Specified by:
setPoolEnabled in interface ConnectionPool
Parameters:
flag - Control the Connection Pool. If it is enabled then Connections will actuall be held around. If disabled then all unused connections will be instantly closed and as connections are released they are closed and removed from the pool.