Package org.apache.tomcat.jdbc.pool

## Class DataSource

- java.lang.Object
- - org.apache.tomcat.jdbc.pool.DataSourceProxy
  - - org.apache.tomcat.jdbc.pool.DataSource

All Implemented Interfaces:
  `java.sql.Wrapper`, `javax.management.MBeanRegistration`, `javax.sql.CommonDataSource`, `javax.sql.ConnectionPoolDataSource`, `javax.sql.DataSource`, `ConnectionPoolMBean`, `PoolConfiguration`

Direct Known Subclasses:
  `XADataSource`

    public class DataSource
    extends DataSourceProxy
    implements javax.sql.DataSource, javax.management.MBeanRegistration, ConnectionPoolMBean, javax.sql.ConnectionPoolDataSource

A DataSource that can be instantiated through IoC and implements the DataSource interface since the DataSourceProxy is used as a generic proxy. The DataSource simply wraps a `ConnectionPool` in order to provide a standard interface to the user.

Version:
  1.0

### Field Summary

Fields
`protected javax.management.ObjectName` `oname`

### Fields inherited from class org.apache.tomcat.jdbc.pool.DataSourceProxy

`pool, poolProperties`

### Fields inherited from interface org.apache.tomcat.jdbc.pool.PoolConfiguration

`PKG_PREFIX`

### Constructor Summary

Constructors
`DataSource()` Constructor for reflection only.
`DataSource​(PoolConfiguration poolProperties)` Constructs a DataSource object wrapping a connection

### Method Summary

All Methods Instance Methods Concrete Methods
`javax.management.ObjectName` `createObjectName​(javax.management.ObjectName original)` Creates the ObjectName for the ConnectionPoolMBean object to be registered
`void` `postDeregister()` Unregisters the underlying connection pool mbean.
`void` `postRegister​(java.lang.Boolean registrationDone)` no-op
`void` `preDeregister()` no-op
`javax.management.ObjectName` `preRegister​(javax.management.MBeanServer server, javax.management.ObjectName name)` If the connection pool MBean exists, it will be registered during this operation.
`protected void` `registerJmx()` Registers the ConnectionPoolMBean under a unique name based on the ObjectName for the DataSource
`protected void` `unregisterJmx()`

### Methods inherited from class org.apache.tomcat.jdbc.pool.DataSourceProxy

`checkAbandoned, checkIdle, close, close, createPool, getAbandonWhenPercentageFull, getActive, getBorrowedCount, getCommitOnReturn, getConnection, getConnection, getConnectionAsync, getConnectionProperties, getCreatedCount, getDataSource, getDataSourceJNDI, getDbProperties, getDefaultAutoCommit, getDefaultCatalog, getDefaultReadOnly, getDefaultTransactionIsolation, getDriverClassName, getIdle, getInitialSize, getInitSQL, getJdbcInterceptors, getJdbcInterceptorsAsArray, getLoginTimeout, getLogValidationErrors, getLogWriter, getMaxActive, getMaxAge, getMaxIdle, getMaxWait, getMinEvictableIdleTimeMillis, getMinIdle, getName, getNumActive, getNumIdle, getNumTestsPerEvictionRun, getParentLogger, getPassword, getPool, getPooledConnection, getPooledConnection, getPoolName, getPoolProperties, getPoolSize, getPropagateInterruptState, getReconnectedCount, getReleasedCount, getReleasedIdleCount, getRemoveAbandonedCount, getRemoveAbandonedTimeout, getReturnedCount, getRollbackOnReturn, getSize, getSuspectTimeout, getTimeBetweenEvictionRunsMillis, getUrl, getUseDisposableConnectionFacade, getUseLock, getUsername, getUseStatementFacade, getValidationInterval, getValidationQuery, getValidationQueryTimeout, getValidator, getValidatorClassName, getWaitCount, getXAConnection, getXAConnection, isAccessToUnderlyingConnectionAllowed, isAlternateUsernameAllowed, isDefaultAutoCommit, isDefaultReadOnly, isFairQueue, isIgnoreExceptionOnPreLoad, isJmxEnabled, isLogAbandoned, isPoolSweeperEnabled, isRemoveAbandoned, isTestOnBorrow, isTestOnConnect, isTestOnReturn, isTestWhileIdle, isUseEquals, isWrapperFor, purge, purgeOnReturn, resetStats, setAbandonWhenPercentageFull, setAccessToUnderlyingConnectionAllowed, setAlternateUsernameAllowed, setCommitOnReturn, setConnectionProperties, setDataSource, setDataSourceJNDI, setDbProperties, setDefaultAutoCommit, setDefaultCatalog, setDefaultReadOnly, setDefaultTransactionIsolation, setDriverClassName, setFairQueue, setIgnoreExceptionOnPreLoad, setInitialSize, setInitSQL, setJdbcInterceptors, setJmxEnabled, setLogAbandoned, setLoginTimeout, setLogValidationErrors, setLogWriter, setMaxActive, setMaxAge, setMaxIdle, setMaxWait, setMinEvictableIdleTimeMillis, setMinIdle, setName, setNumTestsPerEvictionRun, setPassword, setPoolProperties, setPropagateInterruptState, setRemoveAbandoned, setRemoveAbandonedTimeout, setRollbackOnReturn, setSuspectTimeout, setTestOnBorrow, setTestOnConnect, setTestOnReturn, setTestWhileIdle, setTimeBetweenEvictionRunsMillis, setUrl, setUseDisposableConnectionFacade, setUseEquals, setUseLock, setUsername, setUseStatementFacade, setValidationInterval, setValidationQuery, setValidationQueryTimeout, setValidator, setValidatorClassName, testIdle, toString, unwrap`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface javax.sql.CommonDataSource

`createShardingKeyBuilder, getParentLogger`

### Methods inherited from interface javax.sql.ConnectionPoolDataSource

`createPooledConnectionBuilder, getLoginTimeout, getLogWriter, getPooledConnection, getPooledConnection, setLoginTimeout, setLogWriter`

### Methods inherited from interface org.apache.tomcat.jdbc.pool.jmx.ConnectionPoolMBean

`checkAbandoned, checkIdle, getActive, getBorrowedCount, getCreatedCount, getIdle, getNumActive, getNumIdle, getReconnectedCount, getReleasedCount, getReleasedIdleCount, getRemoveAbandonedCount, getReturnedCount, getSize, getWaitCount, purge, purgeOnReturn, resetStats, testIdle`

### Methods inherited from interface javax.sql.DataSource

`createConnectionBuilder, getConnection, getConnection, getLoginTimeout, getLogWriter, setLoginTimeout, setLogWriter`

### Methods inherited from interface org.apache.tomcat.jdbc.pool.PoolConfiguration

`getAbandonWhenPercentageFull, getCommitOnReturn, getConnectionProperties, getDataSource, getDataSourceJNDI, getDbProperties, getDefaultAutoCommit, getDefaultCatalog, getDefaultReadOnly, getDefaultTransactionIsolation, getDriverClassName, getInitialSize, getInitSQL, getJdbcInterceptors, getJdbcInterceptorsAsArray, getLogValidationErrors, getMaxActive, getMaxAge, getMaxIdle, getMaxWait, getMinEvictableIdleTimeMillis, getMinIdle, getName, getNumTestsPerEvictionRun, getPassword, getPoolName, getPropagateInterruptState, getRemoveAbandonedTimeout, getRollbackOnReturn, getSuspectTimeout, getTimeBetweenEvictionRunsMillis, getUrl, getUseDisposableConnectionFacade, getUseLock, getUsername, getUseStatementFacade, getValidationInterval, getValidationQuery, getValidationQueryTimeout, getValidator, getValidatorClassName, isAccessToUnderlyingConnectionAllowed, isAlternateUsernameAllowed, isDefaultAutoCommit, isDefaultReadOnly, isFairQueue, isIgnoreExceptionOnPreLoad, isJmxEnabled, isLogAbandoned, isPoolSweeperEnabled, isRemoveAbandoned, isTestOnBorrow, isTestOnConnect, isTestOnReturn, isTestWhileIdle, isUseEquals, setAbandonWhenPercentageFull, setAccessToUnderlyingConnectionAllowed, setAlternateUsernameAllowed, setCommitOnReturn, setConnectionProperties, setDataSource, setDataSourceJNDI, setDbProperties, setDefaultAutoCommit, setDefaultCatalog, setDefaultReadOnly, setDefaultTransactionIsolation, setDriverClassName, setFairQueue, setIgnoreExceptionOnPreLoad, setInitialSize, setInitSQL, setJdbcInterceptors, setJmxEnabled, setLogAbandoned, setLogValidationErrors, setMaxActive, setMaxAge, setMaxIdle, setMaxWait, setMinEvictableIdleTimeMillis, setMinIdle, setName, setNumTestsPerEvictionRun, setPassword, setPropagateInterruptState, setRemoveAbandoned, setRemoveAbandonedTimeout, setRollbackOnReturn, setSuspectTimeout, setTestOnBorrow, setTestOnConnect, setTestOnReturn, setTestWhileIdle, setTimeBetweenEvictionRunsMillis, setUrl, setUseDisposableConnectionFacade, setUseEquals, setUseLock, setUsername, setUseStatementFacade, setValidationInterval, setValidationQuery, setValidationQueryTimeout, setValidator, setValidatorClassName`

### Methods inherited from interface java.sql.Wrapper

`isWrapperFor, unwrap`

### Field Detail

#### oname

    protected volatile javax.management.ObjectName oname

### Constructor Detail

#### DataSource

    public DataSource()

Constructor for reflection only. A default set of pool properties will be created.

#### DataSource

    public DataSource​(PoolConfiguration poolProperties)

Constructs a DataSource object wrapping a connection

Parameters:
  `poolProperties` - The pool properties

### Method Detail

#### postDeregister

    public void postDeregister()

Unregisters the underlying connection pool mbean.

Specified by:
  `postDeregister` in interface `javax.management.MBeanRegistration`

#### postRegister

    public void postRegister​(java.lang.Boolean registrationDone)

no-op

Specified by:
  `postRegister` in interface `javax.management.MBeanRegistration`

#### preDeregister

    public void preDeregister()
                       throws java.lang.Exception

no-op

Specified by:
  `preDeregister` in interface `javax.management.MBeanRegistration`
Throws:
  `java.lang.Exception`

#### preRegister

    public javax.management.ObjectName preRegister​(javax.management.MBeanServer server,
                                                   javax.management.ObjectName name)
                                            throws java.lang.Exception

If the connection pool MBean exists, it will be registered during this operation.

Specified by:
  `preRegister` in interface `javax.management.MBeanRegistration`
Throws:
  `java.lang.Exception`

#### createObjectName

    public javax.management.ObjectName createObjectName​(javax.management.ObjectName original)
                                                 throws javax.management.MalformedObjectNameException

Creates the ObjectName for the ConnectionPoolMBean object to be registered

Parameters:
  `original` - the ObjectName for the DataSource
Returns:
  the ObjectName for the ConnectionPoolMBean
Throws:
  `javax.management.MalformedObjectNameException` - Invalid object name

#### registerJmx

    protected void registerJmx()

Registers the ConnectionPoolMBean under a unique name based on the ObjectName for the DataSource

#### unregisterJmx

    protected void unregisterJmx()