org.apache.tomcat.jdbc.pool

## 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.
  Author:
    Craig R. McClanahan, Dirk Verbeeck

- - ### Field Summary

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

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DataSourceFactory()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and 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 java.lang.Object

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

- - ### Field Detail

    - #### 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 Detail

    - #### DataSourceFactory

          public DataSourceFactory()

  - ### Method Detail

    - #### 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

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.