# Class DataSourceFactory

java.lang.Object
org.apache.tomcat.jdbc.pool.DataSourceFactory

All Implemented Interfaces:
  `ObjectFactory`

public class DataSourceFactory extends Object implements ObjectFactory

JNDI object factory that creates an instance of `BasicDataSource` that has been configured based on the `RefAddr` values of the specified `Reference`, which must match the names and data types of the `BasicDataSource` bean properties.

Properties available for configuration:
Commons DBCP properties

1. initSQL - A query that gets executed once, right after the connection is established.
2. testOnConnect - run validationQuery after connection has been established.
3. validationInterval - avoid excess validation, only run validation at most at this frequency - time in milliseconds.
4. jdbcInterceptors - a semicolon separated list of classnames extending `JdbcInterceptor` class.
5. jmxEnabled - true of false, whether to register the pool with JMX.
6. fairQueue - true of false, whether the pool should sacrifice a little bit of performance for true fairness.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected static final String[]`
`ALL_PROPERTIES`
`static final String`
`OBJECT_NAME`
`protected static final String`
`PROP_ABANDONWHENPERCENTAGEFULL`
`protected static final String`
`PROP_ACCESSTOUNDERLYINGCONNECTIONALLOWED`
`protected static final String`
`PROP_ALTERNATE_USERNAME_ALLOWED`
`protected static final String`
`PROP_COMMITONRETURN`
`protected static final String`
`PROP_CONNECTIONPROPERTIES`
`protected static final String`
`PROP_DATASOURCE`
`protected static final String`
`PROP_DATASOURCE_JNDI`
`protected static final String`
`PROP_DEFAULTAUTOCOMMIT`
`protected static final String`
`PROP_DEFAULTCATALOG`
`protected static final String`
`PROP_DEFAULTREADONLY`
`protected static final String`
`PROP_DEFAULTTRANSACTIONISOLATION`
`protected static final String`
`PROP_DRIVERCLASSNAME`
`protected static final String`
`PROP_FAIR_QUEUE`
`protected static final String`
`PROP_IGNOREEXCEPTIONONPRELOAD`
`protected static final String`
`PROP_INITIALSIZE`
`protected static final String`
`PROP_INITSQL`
`protected static final String`
`PROP_INTERCEPTORS`
`protected static final String`
`PROP_JMX_ENABLED`
`protected static final String`
`PROP_LOGABANDONED`
`protected static final String`
`PROP_LOGVALIDATIONERRORS`
`protected static final String`
`PROP_MAXACTIVE`
`protected static final String`
`PROP_MAXAGE`
`protected static final String`
`PROP_MAXIDLE`
`protected static final String`
`PROP_MAXOPENPREPAREDSTATEMENTS`
`protected static final String`
`PROP_MAXWAIT`
`protected static final String`
`PROP_MINEVICTABLEIDLETIMEMILLIS`
`protected static final String`
`PROP_MINIDLE`
`protected static final String`
`PROP_NUMTESTSPEREVICTIONRUN`
`protected static final String`
`PROP_PASSWORD`
`protected static final String`
`PROP_POOLPREPAREDSTATEMENTS`
`protected static final String`
`PROP_PROPAGATEINTERRUPTSTATE`
`protected static final String`
`PROP_REMOVEABANDONED`
`protected static final String`
`PROP_REMOVEABANDONEDTIMEOUT`
`protected static final String`
`PROP_ROLLBACKONRETURN`
`protected static final String`
`PROP_SUSPECT_TIMEOUT`
`protected static final String`
`PROP_TESTONBORROW`
`protected static final String`
`PROP_TESTONCONNECT`
`protected static final String`
`PROP_TESTONRETURN`
`protected static final String`
`PROP_TESTWHILEIDLE`
`protected static final String`
`PROP_TIMEBETWEENEVICTIONRUNSMILLIS`
`protected static final String`
`PROP_URL`
`protected static final String`
`PROP_USE_CON_LOCK`
`protected static final String`
`PROP_USE_EQUALS`
`protected static final String`
`PROP_USEDISPOSABLECONNECTIONFACADE`
`protected static final String`
`PROP_USERNAME`
`protected static final String`
`PROP_USESTATEMENTFACADE`
`protected static final String`
`PROP_VALIDATIONINTERVAL`
`protected static final String`
`PROP_VALIDATIONQUERY`
`protected static final String`
`PROP_VALIDATIONQUERY_TIMEOUT`
`protected static final String`
`PROP_VALIDATOR_CLASS_NAME`
`static final int`
`UNKNOWN_TRANSACTIONISOLATION`

## Constructor Summary

Constructors
Constructor
Description
`DataSourceFactory()`

## Method Summary

Modifier and Type
Method
Description
`DataSource`
`createDataSource(Properties properties)`
Creates and configures a `DataSource` instance based on the given properties.
`DataSource`
`createDataSource(Properties properties, Context context, boolean XA)`
`Object`
`getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment)`
Create and return a new `BasicDataSource` instance.
`protected static Properties`
`getProperties(String propText)`
Parse properties from the string.
`static PoolConfiguration`
`parsePoolProperties(Properties properties)`
`void`
`performJNDILookup(Context context, PoolConfiguration poolProperties)`

### Methods inherited from class Object

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

## Field Details

### PROP_DEFAULTAUTOCOMMIT

protected static final String PROP_DEFAULTAUTOCOMMIT

See Also:
  - Constant Field Values

### PROP_DEFAULTREADONLY

protected static final String PROP_DEFAULTREADONLY

See Also:
  - Constant Field Values

### PROP_DEFAULTTRANSACTIONISOLATION

protected static final String PROP_DEFAULTTRANSACTIONISOLATION

See Also:
  - Constant Field Values

### PROP_DEFAULTCATALOG

protected static final String PROP_DEFAULTCATALOG

See Also:
  - Constant Field Values

### PROP_DRIVERCLASSNAME

protected static final String PROP_DRIVERCLASSNAME

See Also:
  - Constant Field Values

### PROP_PASSWORD

protected static final String PROP_PASSWORD

See Also:
  - Constant Field Values

### PROP_URL

protected static final String PROP_URL

See Also:
  - Constant Field Values

### PROP_USERNAME

protected static final String PROP_USERNAME

See Also:
  - Constant Field Values

### PROP_MAXACTIVE

protected static final String PROP_MAXACTIVE

See Also:
  - Constant Field Values

### PROP_MAXIDLE

protected static final String PROP_MAXIDLE

See Also:
  - Constant Field Values

### PROP_MINIDLE

protected static final String PROP_MINIDLE

See Also:
  - Constant Field Values

### PROP_INITIALSIZE

protected static final String PROP_INITIALSIZE

See Also:
  - Constant Field Values

### PROP_MAXWAIT

protected static final String PROP_MAXWAIT

See Also:
  - Constant Field Values

### PROP_MAXAGE

protected static final String PROP_MAXAGE

See Also:
  - Constant Field Values

### PROP_TESTONBORROW

protected static final String PROP_TESTONBORROW

See Also:
  - Constant Field Values

### PROP_TESTONRETURN

protected static final String PROP_TESTONRETURN

See Also:
  - Constant Field Values

### PROP_TESTWHILEIDLE

protected static final String PROP_TESTWHILEIDLE

See Also:
  - Constant Field Values

### PROP_TESTONCONNECT

protected static final String PROP_TESTONCONNECT

See Also:
  - Constant Field Values

### PROP_VALIDATIONQUERY

protected static final String PROP_VALIDATIONQUERY

See Also:
  - Constant Field Values

### PROP_VALIDATIONQUERY_TIMEOUT

protected static final String PROP_VALIDATIONQUERY_TIMEOUT

See Also:
  - Constant Field Values

### PROP_VALIDATOR_CLASS_NAME

protected static final String PROP_VALIDATOR_CLASS_NAME

See Also:
  - Constant Field Values

### PROP_NUMTESTSPEREVICTIONRUN

protected static final String PROP_NUMTESTSPEREVICTIONRUN

See Also:
  - Constant Field Values

### PROP_TIMEBETWEENEVICTIONRUNSMILLIS

protected static final String PROP_TIMEBETWEENEVICTIONRUNSMILLIS

See Also:
  - Constant Field Values

### PROP_MINEVICTABLEIDLETIMEMILLIS

protected static final String PROP_MINEVICTABLEIDLETIMEMILLIS

See Also:
  - Constant Field Values

### PROP_ACCESSTOUNDERLYINGCONNECTIONALLOWED

protected static final String PROP_ACCESSTOUNDERLYINGCONNECTIONALLOWED

See Also:
  - Constant Field Values

### PROP_REMOVEABANDONED

protected static final String PROP_REMOVEABANDONED

See Also:
  - Constant Field Values

### PROP_REMOVEABANDONEDTIMEOUT

protected static final String PROP_REMOVEABANDONEDTIMEOUT

See Also:
  - Constant Field Values

### PROP_LOGABANDONED

protected static final String PROP_LOGABANDONED

See Also:
  - Constant Field Values

### PROP_ABANDONWHENPERCENTAGEFULL

protected static final String PROP_ABANDONWHENPERCENTAGEFULL

See Also:
  - Constant Field Values

### PROP_POOLPREPAREDSTATEMENTS

protected static final String PROP_POOLPREPAREDSTATEMENTS

See Also:
  - Constant Field Values

### PROP_MAXOPENPREPAREDSTATEMENTS

protected static final String PROP_MAXOPENPREPAREDSTATEMENTS

See Also:
  - Constant Field Values

### PROP_CONNECTIONPROPERTIES

protected static final String PROP_CONNECTIONPROPERTIES

See Also:
  - Constant Field Values

### PROP_INITSQL

protected static final String PROP_INITSQL

See Also:
  - Constant Field Values

### PROP_INTERCEPTORS

protected static final String PROP_INTERCEPTORS

See Also:
  - Constant Field Values

### PROP_VALIDATIONINTERVAL

protected static final String PROP_VALIDATIONINTERVAL

See Also:
  - Constant Field Values

### PROP_JMX_ENABLED

protected static final String PROP_JMX_ENABLED

See Also:
  - Constant Field Values

### PROP_FAIR_QUEUE

protected static final String PROP_FAIR_QUEUE

See Also:
  - Constant Field Values

### PROP_USE_EQUALS

protected static final String PROP_USE_EQUALS

See Also:
  - Constant Field Values

### PROP_USE_CON_LOCK

protected static final String PROP_USE_CON_LOCK

See Also:
  - Constant Field Values

### PROP_DATASOURCE

protected static final String PROP_DATASOURCE

See Also:
  - Constant Field Values

### PROP_DATASOURCE_JNDI

protected static final String PROP_DATASOURCE_JNDI

See Also:
  - Constant Field Values

### PROP_SUSPECT_TIMEOUT

protected static final String PROP_SUSPECT_TIMEOUT

See Also:
  - Constant Field Values

### PROP_ALTERNATE_USERNAME_ALLOWED

protected static final String PROP_ALTERNATE_USERNAME_ALLOWED

See Also:
  - Constant Field Values

### PROP_COMMITONRETURN

protected static final String PROP_COMMITONRETURN

See Also:
  - Constant Field Values

### PROP_ROLLBACKONRETURN

protected static final String PROP_ROLLBACKONRETURN

See Also:
  - Constant Field Values

### PROP_USEDISPOSABLECONNECTIONFACADE

protected static final String PROP_USEDISPOSABLECONNECTIONFACADE

See Also:
  - Constant Field Values

### PROP_LOGVALIDATIONERRORS

protected static final String PROP_LOGVALIDATIONERRORS

See Also:
  - Constant Field Values

### PROP_PROPAGATEINTERRUPTSTATE

protected static final String PROP_PROPAGATEINTERRUPTSTATE

See Also:
  - Constant Field Values

### PROP_IGNOREEXCEPTIONONPRELOAD

protected static final String PROP_IGNOREEXCEPTIONONPRELOAD

See Also:
  - Constant Field Values

### PROP_USESTATEMENTFACADE

protected static final String PROP_USESTATEMENTFACADE

See Also:
  - Constant Field Values

### UNKNOWN_TRANSACTIONISOLATION

public static final int UNKNOWN_TRANSACTIONISOLATION

See Also:
  - Constant Field Values

### OBJECT_NAME

public static final String OBJECT_NAME

See Also:
  - Constant Field Values

### ALL_PROPERTIES

protected static final String[] ALL_PROPERTIES

## Constructor Details

### DataSourceFactory

public DataSourceFactory()

## Method Details

### getObjectInstance

public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment) throws Exception

Create and return a new `BasicDataSource` instance. If no instance can be created, return `null` instead.

Specified by:
  `getObjectInstance` in interface `ObjectFactory`
Parameters:
  `obj` - The possibly null object containing location or reference information that can be used in creating an object
  `name` - The name of this object relative to `nameCtx`
  `nameCtx` - The context relative to which the `name` parameter is specified, or `null` if `name` is relative to the default initial context
  `environment` - The possibly null environment that is used in creating this object
Throws:
  `Exception` - if an exception occurs creating the instance

### parsePoolProperties

public static PoolConfiguration parsePoolProperties(Properties properties)

### createDataSource

public DataSource createDataSource(Properties properties) throws Exception
Creates and configures a `DataSource` instance based on the given properties.

Parameters:
  `properties` - the datasource configuration properties
Returns:
  the datasource
Throws:
  `Exception` - if an error occurs creating the data source

### createDataSource

public DataSource createDataSource(Properties properties, Context context, boolean XA) throws Exception

Throws:
  `Exception`

### performJNDILookup

public void performJNDILookup(Context context, PoolConfiguration poolProperties)

### getProperties

protected static Properties getProperties(String propText)
Parse properties from the string. Format of the string must be [propertyName=property;]*.

Parameters:
  `propText` - The properties string
Returns:
  the properties