Class BasicManagedDataSource
- java.lang.Object
-
- org.apache.commons.dbcp.BasicDataSource
-
- org.apache.commons.dbcp.managed.BasicManagedDataSource
-
- All Implemented Interfaces:
java.sql.Wrapper
,javax.sql.CommonDataSource
,javax.sql.DataSource
public class BasicManagedDataSource extends BasicDataSource
BasicManagedDataSource is an extension of BasicDataSource which creates ManagedConnections. This data source can create either full two-phase-commit XA connections or one-phase-commit local connections. Both types of connections are committed or rolled back as part of the global transaction (a.k.a. XA transaction or JTA Transaction), but only XA connections can be recovered in the case of a system crash.
BasicManagedDataSource adds the TransactionManager and XADataSource properties. The TransactionManager property is required and is used to elist connections in global transactions. The XADataSource is optional and if set is the class name of the XADataSource class for a two-phase-commit JDBC driver. If the XADataSource property is set, the driverClassName is ignored and a DataSourceXAConnectionFactory is created. Otherwise, a standard DriverConnectionFactory is created and wrapped with a LocalXAConnectionFactory.
- Version:
- $Revision$
- See Also:
BasicDataSource
,ManagedConnection
-
-
Field Summary
-
Fields inherited from class org.apache.commons.dbcp.BasicDataSource
closed, connectionInitSqls, connectionPool, connectionProperties, dataSource, defaultAutoCommit, defaultCatalog, defaultReadOnly, defaultTransactionIsolation, driverClassLoader, driverClassName, initialSize, logWriter, maxActive, maxIdle, maxOpenPreparedStatements, maxWait, minEvictableIdleTimeMillis, minIdle, numTestsPerEvictionRun, password, poolPreparedStatements, testOnBorrow, testOnReturn, testWhileIdle, timeBetweenEvictionRunsMillis, url, username, validationQuery, validationQueryTimeout
-
-
Constructor Summary
Constructors Constructor Description BasicManagedDataSource()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ConnectionFactory
createConnectionFactory()
Creates a JDBC connection factory for this datasource.protected void
createDataSourceInstance()
Creates the actual data source instance.protected void
createPoolableConnectionFactory(ConnectionFactory driverConnectionFactory, org.apache.commons.pool.KeyedObjectPoolFactory statementPoolFactory, AbandonedConfig abandonedConfig)
Creates the PoolableConnectionFactory and attaches it to the connection pool.javax.transaction.TransactionManager
getTransactionManager()
Gets the required transaction manager property.protected TransactionRegistry
getTransactionRegistry()
Gets the transaction registry.java.lang.String
getXADataSource()
Gets the optional XADataSource class name.javax.sql.XADataSource
getXaDataSourceInstance()
Gets the XADataSource instance used by the XAConnectionFactory.void
setTransactionManager(javax.transaction.TransactionManager transactionManager)
Sets the required transaction manager property.void
setXADataSource(java.lang.String xaDataSource)
Sets the optional XADataSource class name.void
setXaDataSourceInstance(javax.sql.XADataSource xaDataSourceInstance)
Sets the XADataSource instance used by the XAConnectionFactory.-
Methods inherited from class org.apache.commons.dbcp.BasicDataSource
addConnectionProperty, close, createConnectionPool, createDataSource, getConnection, getConnection, getConnectionInitSqls, getDefaultAutoCommit, getDefaultCatalog, getDefaultReadOnly, getDefaultTransactionIsolation, getDriverClassLoader, getDriverClassName, getInitialSize, getLogAbandoned, getLoginTimeout, getLogWriter, getMaxActive, getMaxIdle, getMaxOpenPreparedStatements, getMaxWait, getMinEvictableIdleTimeMillis, getMinIdle, getNumActive, getNumIdle, getNumTestsPerEvictionRun, getParentLogger, getPassword, getRemoveAbandoned, getRemoveAbandonedTimeout, getTestOnBorrow, getTestOnReturn, getTestWhileIdle, getTimeBetweenEvictionRunsMillis, getUrl, getUsername, getValidationQuery, getValidationQueryTimeout, isAccessToUnderlyingConnectionAllowed, isClosed, isPoolPreparedStatements, isWrapperFor, log, removeConnectionProperty, setAccessToUnderlyingConnectionAllowed, setConnectionInitSqls, setConnectionProperties, setDefaultAutoCommit, setDefaultCatalog, setDefaultReadOnly, setDefaultTransactionIsolation, setDriverClassLoader, setDriverClassName, setInitialSize, setLogAbandoned, setLoginTimeout, setLogWriter, setMaxActive, setMaxIdle, setMaxOpenPreparedStatements, setMaxWait, setMinEvictableIdleTimeMillis, setMinIdle, setNumTestsPerEvictionRun, setPassword, setPoolPreparedStatements, setRemoveAbandoned, setRemoveAbandonedTimeout, setTestOnBorrow, setTestOnReturn, setTestWhileIdle, setTimeBetweenEvictionRunsMillis, setUrl, setUsername, setValidationQuery, setValidationQueryTimeout, unwrap, validateConnectionFactory
-
-
-
-
Method Detail
-
getXaDataSourceInstance
public javax.sql.XADataSource getXaDataSourceInstance()
Gets the XADataSource instance used by the XAConnectionFactory.- Returns:
- the XADataSource
-
setXaDataSourceInstance
public void setXaDataSourceInstance(javax.sql.XADataSource xaDataSourceInstance)
Sets the XADataSource instance used by the XAConnectionFactory.
Note: this method currently has no effect once the pool has been initialized. The pool is initialized the first time one of the following methods is invoked:
getConnection, setLogwriter, setLoginTimeout, getLoginTimeout, getLogWriter.
- Parameters:
xaDataSourceInstance
- XADataSource instance
-
getTransactionManager
public javax.transaction.TransactionManager getTransactionManager()
Gets the required transaction manager property.- Returns:
- the transaction manager used to enlist connections
-
getTransactionRegistry
protected TransactionRegistry getTransactionRegistry()
Gets the transaction registry.- Returns:
- the transaction registry associating XAResources with managed connections
-
setTransactionManager
public void setTransactionManager(javax.transaction.TransactionManager transactionManager)
Sets the required transaction manager property.- Parameters:
transactionManager
- the transaction manager used to enlist connections
-
getXADataSource
public java.lang.String getXADataSource()
Gets the optional XADataSource class name.- Returns:
- the optional XADataSource class name
-
setXADataSource
public void setXADataSource(java.lang.String xaDataSource)
Sets the optional XADataSource class name.- Parameters:
xaDataSource
- the optional XADataSource class name
-
createConnectionFactory
protected ConnectionFactory createConnectionFactory() throws java.sql.SQLException
Description copied from class:BasicDataSource
Creates a JDBC connection factory for this datasource. This method only exists so subclasses can replace the implementation class.- Overrides:
createConnectionFactory
in classBasicDataSource
- Throws:
java.sql.SQLException
-
createDataSourceInstance
protected void createDataSourceInstance() throws java.sql.SQLException
Description copied from class:BasicDataSource
Creates the actual data source instance. This method only exists so subclasses can replace the implementation class.- Overrides:
createDataSourceInstance
in classBasicDataSource
- Throws:
java.sql.SQLException
- if unable to create a datasource instance
-
createPoolableConnectionFactory
protected void createPoolableConnectionFactory(ConnectionFactory driverConnectionFactory, org.apache.commons.pool.KeyedObjectPoolFactory statementPoolFactory, AbandonedConfig abandonedConfig) throws java.sql.SQLException
Creates the PoolableConnectionFactory and attaches it to the connection pool.- Overrides:
createPoolableConnectionFactory
in classBasicDataSource
- Parameters:
driverConnectionFactory
- JDBC connection factory created bycreateConnectionFactory()
statementPoolFactory
- statement pool factory (null if statement pooling is turned off)abandonedConfig
- abandoned connection tracking configuration (null if no tracking)- Throws:
java.sql.SQLException
- if an error occurs creating the PoolableConnectionFactory
-
-