|
Apache Tomcat 7.0.28 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.tomcat.jdbc.pool.ConnectionPool
public class ConnectionPool
Implementation of simple connection pool.
The ConnectionPool uses a PoolProperties
object for storing all the meta information about the connection pool.
As the underlying implementation, the connection pool uses BlockingQueue
to store active and idle connections.
A custom implementation of a fair FairBlockingQueue
blocking queue is provided with the connection pool itself.
Nested Class Summary | |
---|---|
protected class |
ConnectionPool.ConnectionFuture
Tread safe wrapper around a future for the regular queue This one retrieves the pooled connection object and performs the initialization according to interceptors and validation rules. |
protected class |
ConnectionPool.PoolCleaner
|
Field Summary | |
---|---|
protected ConnectionPool |
jmxPool
reference to the JMX mbean |
static String |
POOL_JMX_TYPE_PREFIX
Prefix type for JMX registration |
Constructor Summary | |
---|---|
ConnectionPool(PoolConfiguration prop)
Instantiate a connection pool. |
Method Summary | |
---|---|
protected void |
abandon(PooledConnection con)
thread safe way to abandon a connection signals a connection to be abandoned. |
protected PooledConnection |
borrowConnection(long now,
PooledConnection con,
String username,
String password)
Validates and configures a previously idle connection |
void |
checkAbandoned()
Iterates through all the busy connections and checks for connections that have timed out |
void |
checkIdle()
Iterates through the idle connections and resizes the idle pool based on parameters PoolProperties.maxIdle , PoolProperties.minIdle , PoolProperties.minEvictableIdleTimeMillis |
void |
checkIdle(boolean ignoreMinSize)
|
protected void |
close(boolean force)
Closes the pool and all disconnects all idle connections Active connections will be closed upon the close method is called
on the underlying connection instead of being returned to the pool |
protected PooledConnection |
create(boolean incrementCounter)
Create a new pooled connection object. |
protected PooledConnection |
createConnection(long now,
PooledConnection notUsed,
String username,
String password)
Creates a JDBC connection and tries to connect to the database. |
protected void |
createMBean()
Create MBean object that can be registered. |
protected void |
disconnectEvent(PooledConnection con,
boolean finalizing)
Hook to perform final actions on a pooled connection object once it has been disconnected and will be discarded |
protected void |
finalize(PooledConnection con)
Hook to perform final actions on a pooled connection object once it has been disconnected and will be discarded |
int |
getActive()
Returns the number of connections that are in use |
Connection |
getConnection()
Borrows a connection from the pool. |
Connection |
getConnection(String username,
String password)
Borrows a connection from the pool. |
Future<Connection> |
getConnectionAsync()
Retrieves a Connection future. |
int |
getIdle()
Returns the number of idle connections |
ConnectionPool |
getJmxPool()
Return the object that is potentially registered in JMX for notifications |
String |
getName()
Returns the name of this pool |
static Set<TimerTask> |
getPoolCleaners()
|
PoolConfiguration |
getPoolProperties()
Returns the pool properties associated with this connection pool |
static Timer |
getPoolTimer()
|
long |
getPoolVersion()
|
Constructor<?> |
getProxyConstructor(boolean xa)
Creates and caches a Constructor used to instantiate the proxy object. |
int |
getSize()
Returns the total size of this pool, this includes both busy and idle connections |
static String |
getStackTrace(Throwable x)
Convert an exception into a String |
protected static String |
getThreadDump()
Creates a stack trace representing the existing thread's current state. |
int |
getWaitCount()
Return the number of threads waiting for a connection |
protected void |
init(PoolConfiguration properties)
Initialize the connection pool - called from the constructor |
void |
initializePoolCleaner(PoolConfiguration properties)
|
boolean |
isClosed()
Returns true if close has been called, and the connection pool is unusable |
void |
purge()
Purges all connections in the pool. |
void |
purgeOnReturn()
Purges connections when they are returned from the pool. |
protected void |
release(PooledConnection con)
thread safe way to release a connection |
protected void |
returnConnection(PooledConnection con)
Returns a connection to the pool If the pool is closed, the connection will be released If the connection is not part of the busy queue, it will be released. |
protected Connection |
setupConnection(PooledConnection con)
configures a pooled connection as a proxy. |
protected boolean |
shouldAbandon()
Determines if a connection should be abandoned based on PoolProperties.abandonWhenPercentageFull setting. |
protected boolean |
shouldClose(PooledConnection con,
int action)
Determines if a connection should be closed upon return to the pool. |
protected boolean |
shouldReleaseIdle(long now,
PooledConnection con,
long time)
|
protected void |
suspect(PooledConnection con)
thread safe way to abandon a connection signals a connection to be abandoned. |
protected boolean |
terminateTransaction(PooledConnection con)
Terminate the current transaction for the given connection. |
void |
testAllIdle()
Forces a validation of all idle connections if PoolProperties.testWhileIdle is set. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String POOL_JMX_TYPE_PREFIX
protected ConnectionPool jmxPool
Constructor Detail |
---|
public ConnectionPool(PoolConfiguration prop) throws SQLException
PoolProperties
should not be reused for another connection pool.
prop
- PoolProperties - all the properties for this connection pool
SQLException
Method Detail |
---|
public Future<Connection> getConnectionAsync() throws SQLException
SQLException
public Connection getConnection() throws SQLException
maxActive
connections a connection is returned immediately.
If no connection is available, the pool will attempt to fetch a connection for maxWait
milliseconds.
SQLException
- - if the wait times out or a failure occurs creating a connectionpublic Connection getConnection(String username, String password) throws SQLException
maxActive
connections a connection is returned immediately. If no
connection is available, the pool will attempt to fetch a connection for
maxWait
milliseconds.
SQLException
- - if the wait times out or a failure occurs creating a
connectionpublic String getName()
public int getWaitCount()
public PoolConfiguration getPoolProperties()
public int getSize()
public int getActive()
public int getIdle()
public boolean isClosed()
close
has been called, and the connection pool is unusable
protected Connection setupConnection(PooledConnection con) throws SQLException
Connection
and PooledConnection
interfaces.
All calls on Connection
methods will be propagated down to the actual JDBC connection except for the
Connection.close()
method.
con
- a PooledConnection
to wrap in a Proxy
Connection
object wrapping a pooled connection.
SQLException
- if an interceptor can't be configured, if the proxy can't be instantiatedpublic Constructor<?> getProxyConstructor(boolean xa) throws NoSuchMethodException
Constructor
used to instantiate the proxy object.
We cache this, since the creation of a constructor is fairly slow.
NoSuchMethodException
protected void close(boolean force)
close
method is called
on the underlying connection instead of being returned to the pool
force
- - true to even close the active connectionsprotected void init(PoolConfiguration properties) throws SQLException
properties
- PoolProperties - properties used to initialize the pool with
SQLException
- if initialization failspublic void initializePoolCleaner(PoolConfiguration properties)
protected void abandon(PooledConnection con)
con
- PooledConnectionprotected void suspect(PooledConnection con)
con
- PooledConnectionprotected void release(PooledConnection con)
con
- PooledConnectionprotected PooledConnection createConnection(long now, PooledConnection notUsed, String username, String password) throws SQLException
now
- timestamp of when this was callednotUsed
- Argument not used
SQLException
protected PooledConnection borrowConnection(long now, PooledConnection con, String username, String password) throws SQLException
now
- - timestampcon
- - the connection to validate and configure
SQLException
- if a validation error happensprotected boolean terminateTransaction(PooledConnection con)
con
-
true
if the connection TX termination succeeded
otherwise false
protected boolean shouldClose(PooledConnection con, int action)
con
- - the connectionaction
- - the validation action that should be performed
protected void returnConnection(PooledConnection con)
PoolProperties.testOnReturn
is set to true it will be validated
con
- PooledConnection to be returned to the poolprotected boolean shouldAbandon()
PoolProperties.abandonWhenPercentageFull
setting.
public void checkAbandoned()
public void checkIdle()
PoolProperties.maxIdle
, PoolProperties.minIdle
, PoolProperties.minEvictableIdleTimeMillis
public void checkIdle(boolean ignoreMinSize)
protected boolean shouldReleaseIdle(long now, PooledConnection con, long time)
public void testAllIdle()
PoolProperties.testWhileIdle
is set.
protected static String getThreadDump()
Thread.getStackTrace()
elementspublic static String getStackTrace(Throwable x)
x
- - the throwable
protected PooledConnection create(boolean incrementCounter)
public void purge()
purgeOnReturn()
public void purgeOnReturn()
purge()
protected void finalize(PooledConnection con)
con
- protected void disconnectEvent(PooledConnection con, boolean finalizing)
con
- public ConnectionPool getJmxPool()
ConnectionPoolMBean
interfaceprotected void createMBean()
public static Set<TimerTask> getPoolCleaners()
public long getPoolVersion()
public static Timer getPoolTimer()
|
Apache Tomcat 7.0.28 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |