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 Details

    • PROP_DEFAULTAUTOCOMMIT

      protected static final String PROP_DEFAULTAUTOCOMMIT
      Property name for defaultAutoCommit.
      See Also:
    • PROP_DEFAULTREADONLY

      protected static final String PROP_DEFAULTREADONLY
      Property name for defaultReadOnly.
      See Also:
    • PROP_DEFAULTTRANSACTIONISOLATION

      protected static final String PROP_DEFAULTTRANSACTIONISOLATION
      Property name for defaultTransactionIsolation.
      See Also:
    • PROP_DEFAULTCATALOG

      protected static final String PROP_DEFAULTCATALOG
      Property name for defaultCatalog.
      See Also:
    • PROP_DRIVERCLASSNAME

      protected static final String PROP_DRIVERCLASSNAME
      Property name for driverClassName.
      See Also:
    • PROP_PASSWORD

      protected static final String PROP_PASSWORD
      Property name for password.
      See Also:
    • PROP_URL

      protected static final String PROP_URL
      Property name for url.
      See Also:
    • PROP_USERNAME

      protected static final String PROP_USERNAME
      Property name for username.
      See Also:
    • PROP_MAXACTIVE

      protected static final String PROP_MAXACTIVE
      Property name for maxActive.
      See Also:
    • PROP_MAXIDLE

      protected static final String PROP_MAXIDLE
      Property name for maxIdle.
      See Also:
    • PROP_MINIDLE

      protected static final String PROP_MINIDLE
      Property name for minIdle.
      See Also:
    • PROP_INITIALSIZE

      protected static final String PROP_INITIALSIZE
      Property name for initialSize.
      See Also:
    • PROP_MAXWAIT

      protected static final String PROP_MAXWAIT
      Property name for maxWait.
      See Also:
    • PROP_MAXAGE

      protected static final String PROP_MAXAGE
      Property name for maxAge.
      See Also:
    • PROP_TESTONBORROW

      protected static final String PROP_TESTONBORROW
      Property name for testOnBorrow.
      See Also:
    • PROP_TESTONRETURN

      protected static final String PROP_TESTONRETURN
      Property name for testOnReturn.
      See Also:
    • PROP_TESTWHILEIDLE

      protected static final String PROP_TESTWHILEIDLE
      Property name for testWhileIdle.
      See Also:
    • PROP_TESTONCONNECT

      protected static final String PROP_TESTONCONNECT
      Property name for testOnConnect.
      See Also:
    • PROP_VALIDATIONQUERY

      protected static final String PROP_VALIDATIONQUERY
      Property name for validationQuery.
      See Also:
    • PROP_VALIDATIONQUERY_TIMEOUT

      protected static final String PROP_VALIDATIONQUERY_TIMEOUT
      Property name for validationQueryTimeout.
      See Also:
    • PROP_VALIDATOR_CLASS_NAME

      protected static final String PROP_VALIDATOR_CLASS_NAME
      Property name for validatorClassName.
      See Also:
    • PROP_NUMTESTSPEREVICTIONRUN

      protected static final String PROP_NUMTESTSPEREVICTIONRUN
      Property name for numTestsPerEvictionRun.
      See Also:
    • PROP_TIMEBETWEENEVICTIONRUNSMILLIS

      protected static final String PROP_TIMEBETWEENEVICTIONRUNSMILLIS
      Property name for timeBetweenEvictionRunsMillis.
      See Also:
    • PROP_MINEVICTABLEIDLETIMEMILLIS

      protected static final String PROP_MINEVICTABLEIDLETIMEMILLIS
      Property name for minEvictableIdleTimeMillis.
      See Also:
    • PROP_ACCESSTOUNDERLYINGCONNECTIONALLOWED

      protected static final String PROP_ACCESSTOUNDERLYINGCONNECTIONALLOWED
      Property name for accessToUnderlyingConnectionAllowed.
      See Also:
    • PROP_REMOVEABANDONED

      protected static final String PROP_REMOVEABANDONED
      Property name for removeAbandoned.
      See Also:
    • PROP_REMOVEABANDONEDTIMEOUT

      protected static final String PROP_REMOVEABANDONEDTIMEOUT
      Property name for removeAbandonedTimeout.
      See Also:
    • PROP_LOGABANDONED

      protected static final String PROP_LOGABANDONED
      Property name for logAbandoned.
      See Also:
    • PROP_ABANDONWHENPERCENTAGEFULL

      protected static final String PROP_ABANDONWHENPERCENTAGEFULL
      Property name for abandonWhenPercentageFull.
      See Also:
    • PROP_POOLPREPAREDSTATEMENTS

      protected static final String PROP_POOLPREPAREDSTATEMENTS
      Property name for poolPreparedStatements.
      See Also:
    • PROP_MAXOPENPREPAREDSTATEMENTS

      protected static final String PROP_MAXOPENPREPAREDSTATEMENTS
      Property name for maxOpenPreparedStatements.
      See Also:
    • PROP_CONNECTIONPROPERTIES

      protected static final String PROP_CONNECTIONPROPERTIES
      Property name for connectionProperties.
      See Also:
    • PROP_INITSQL

      protected static final String PROP_INITSQL
      Property name for initSQL.
      See Also:
    • PROP_INTERCEPTORS

      protected static final String PROP_INTERCEPTORS
      Property name for jdbcInterceptors.
      See Also:
    • PROP_VALIDATIONINTERVAL

      protected static final String PROP_VALIDATIONINTERVAL
      Property name for validationInterval.
      See Also:
    • PROP_JMX_ENABLED

      protected static final String PROP_JMX_ENABLED
      Property name for jmxEnabled.
      See Also:
    • PROP_FAIR_QUEUE

      protected static final String PROP_FAIR_QUEUE
      Property name for fairQueue.
      See Also:
    • PROP_USE_EQUALS

      protected static final String PROP_USE_EQUALS
      Property name for useEquals.
      See Also:
    • PROP_USE_CON_LOCK

      protected static final String PROP_USE_CON_LOCK
      Property name for useLock.
      See Also:
    • PROP_DATASOURCE

      protected static final String PROP_DATASOURCE
      Property name for dataSource.
      See Also:
    • PROP_DATASOURCE_JNDI

      protected static final String PROP_DATASOURCE_JNDI
      Property name for dataSourceJNDI.
      See Also:
    • PROP_SUSPECT_TIMEOUT

      protected static final String PROP_SUSPECT_TIMEOUT
      Property name for suspectTimeout.
      See Also:
    • PROP_ALTERNATE_USERNAME_ALLOWED

      protected static final String PROP_ALTERNATE_USERNAME_ALLOWED
      Property name for alternateUsernameAllowed.
      See Also:
    • PROP_COMMITONRETURN

      protected static final String PROP_COMMITONRETURN
      Property name for commitOnReturn.
      See Also:
    • PROP_ROLLBACKONRETURN

      protected static final String PROP_ROLLBACKONRETURN
      Property name for rollbackOnReturn.
      See Also:
    • PROP_USEDISPOSABLECONNECTIONFACADE

      protected static final String PROP_USEDISPOSABLECONNECTIONFACADE
      Property name for useDisposableConnectionFacade.
      See Also:
    • PROP_LOGVALIDATIONERRORS

      protected static final String PROP_LOGVALIDATIONERRORS
      Property name for logValidationErrors.
      See Also:
    • PROP_PROPAGATEINTERRUPTSTATE

      protected static final String PROP_PROPAGATEINTERRUPTSTATE
      Property name for propagateInterruptState.
      See Also:
    • PROP_IGNOREEXCEPTIONONPRELOAD

      protected static final String PROP_IGNOREEXCEPTIONONPRELOAD
      Property name for ignoreExceptionOnPreLoad.
      See Also:
    • PROP_USESTATEMENTFACADE

      protected static final String PROP_USESTATEMENTFACADE
      Property name for useStatementFacade.
      See Also:
    • UNKNOWN_TRANSACTIONISOLATION

      public static final int UNKNOWN_TRANSACTIONISOLATION
      Value indicating an unknown transaction isolation level.
      See Also:
    • OBJECT_NAME

      public static final String OBJECT_NAME
      Property name for the JMX object name.
      See Also:
    • ALL_PROPERTIES

      protected static final String[] ALL_PROPERTIES
      Array of all supported property names.
  • Constructor Details

    • DataSourceFactory

      public DataSourceFactory()
      Default constructor.
  • 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)
      Parse the given properties into a PoolConfiguration.
      Parameters:
      properties - The properties to parse
      Returns:
      The configured PoolConfiguration
    • 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
      Creates and configures a DataSource instance based on the given properties.
      Parameters:
      properties - The datasource configuration properties
      context - The JNDI context
      XA - true to create an XA data source
      Returns:
      The configured datasource
      Throws:
      Exception - if an error occurs creating the data source
    • performJNDILookup

      public void performJNDILookup(Context context, PoolConfiguration poolProperties)
      Perform a JNDI lookup for the data source.
      Parameters:
      context - The JNDI context
      poolProperties - The pool configuration
    • 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