public class SharedPoolDataSource extends InstanceKeyDataSource
A pooling DataSource
appropriate for deployment within
J2EE environment. There are many configuration options, most of which are
defined in the parent class. All users (based on username) share a single
maximum number of Connections in this datasource.
User passwords can be changed without re-initializing the datasource.
When a getConnection(username, password)
request is processed
with a password that is different from those used to create connections in the
pool associated with username
, an attempt is made to create a
new connection using the supplied password and if this succeeds, idle connections
created using the old password are destroyed and new connections are created
using the new password.
Modifier and Type | Field and Description |
---|---|
private KeyedCPDSConnectionFactory |
factory |
private int |
maxActive |
private int |
maxIdle |
private int |
maxWait |
private org.apache.commons.pool.KeyedObjectPool |
pool |
private static long |
serialVersionUID |
instanceKey, jndiEnvironment, UNKNOWN_TRANSACTIONISOLATION
Constructor and Description |
---|
SharedPoolDataSource()
Default no-arg constructor for Serialization
|
Modifier and Type | Method and Description |
---|---|
void |
close()
Close pool being maintained by this datasource.
|
protected PooledConnectionManager |
getConnectionManager(UserPassKey upkey) |
int |
getMaxActive()
The maximum number of active connections that can be allocated from
this pool at the same time, or non-positive for no limit.
|
int |
getMaxIdle()
The maximum number of active connections that can remain idle in the
pool, without extra ones being released, or negative for no limit.
|
int |
getMaxWait()
The maximum number of milliseconds that the pool will wait (when there
are no available connections) for a connection to be returned before
throwing an exception, or -1 to wait indefinitely.
|
int |
getNumActive()
Get the number of active connections in the pool.
|
int |
getNumIdle()
Get the number of idle connections in the pool.
|
java.util.logging.Logger |
getParentLogger() |
protected PooledConnectionAndInfo |
getPooledConnectionAndInfo(java.lang.String username,
java.lang.String password) |
javax.naming.Reference |
getReference()
Returns a
SharedPoolDataSource Reference . |
private void |
readObject(java.io.ObjectInputStream in)
Supports Serialization interface.
|
private void |
registerPool(java.lang.String username,
java.lang.String password) |
void |
setMaxActive(int maxActive)
The maximum number of active connections that can be allocated from
this pool at the same time, or non-positive for no limit.
|
void |
setMaxIdle(int maxIdle)
The maximum number of active connections that can remain idle in the
pool, without extra ones being released, or negative for no limit.
|
void |
setMaxWait(int maxWait)
The maximum number of milliseconds that the pool will wait (when there
are no available connections) for a connection to be returned before
throwing an exception, or -1 to wait indefinitely.
|
protected void |
setupDefaults(java.sql.Connection con,
java.lang.String username) |
assertInitializationAllowed, getConnection, getConnection, getConnectionPoolDataSource, getDataSourceName, getDefaultTransactionIsolation, getDescription, getJndiEnvironment, getLoginTimeout, getLogWriter, getMinEvictableIdleTimeMillis, getNumTestsPerEvictionRun, getTestOnBorrow, getTestOnReturn, getTestWhileIdle, getTimeBetweenEvictionRunsMillis, getValidationQuery, isDefaultAutoCommit, isDefaultReadOnly, isRollbackAfterValidation, isTestOnBorrow, isTestOnReturn, isTestWhileIdle, isWrapperFor, setConnectionPoolDataSource, setDataSourceName, setDefaultAutoCommit, setDefaultReadOnly, setDefaultTransactionIsolation, setDescription, setJndiEnvironment, setLoginTimeout, setLogWriter, setMinEvictableIdleTimeMillis, setNumTestsPerEvictionRun, setRollbackAfterValidation, setTestOnBorrow, setTestOnReturn, setTestWhileIdle, setTimeBetweenEvictionRunsMillis, setValidationQuery, testCPDS, unwrap, whenExhaustedAction
private static final long serialVersionUID
private int maxActive
private int maxIdle
private int maxWait
private transient org.apache.commons.pool.KeyedObjectPool pool
private transient KeyedCPDSConnectionFactory factory
public SharedPoolDataSource()
public void close() throws java.lang.Exception
close
in class InstanceKeyDataSource
java.lang.Exception
public int getMaxActive()
public void setMaxActive(int maxActive)
public int getMaxIdle()
public void setMaxIdle(int maxIdle)
public int getMaxWait()
public void setMaxWait(int maxWait)
public int getNumActive()
public int getNumIdle()
protected PooledConnectionAndInfo getPooledConnectionAndInfo(java.lang.String username, java.lang.String password) throws java.sql.SQLException
getPooledConnectionAndInfo
in class InstanceKeyDataSource
java.sql.SQLException
protected PooledConnectionManager getConnectionManager(UserPassKey upkey)
getConnectionManager
in class InstanceKeyDataSource
public javax.naming.Reference getReference() throws javax.naming.NamingException
SharedPoolDataSource
Reference
.getReference
in interface javax.naming.Referenceable
getReference
in class InstanceKeyDataSource
javax.naming.NamingException
- If a naming exception was encountered
while retrieving the reference.private void registerPool(java.lang.String username, java.lang.String password) throws javax.naming.NamingException, java.sql.SQLException
javax.naming.NamingException
java.sql.SQLException
protected void setupDefaults(java.sql.Connection con, java.lang.String username) throws java.sql.SQLException
setupDefaults
in class InstanceKeyDataSource
java.sql.SQLException
private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException
in
- a java.io.ObjectInputStream
valuejava.io.IOException
- if an error occursjava.lang.ClassNotFoundException
- if an error occurspublic java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedException
java.sql.SQLFeatureNotSupportedException