Class DataSourceFactory

  • All Implemented Interfaces:
    javax.naming.spi.ObjectFactory

    public class DataSourceFactory
    extends java.lang.Object
    implements javax.naming.spi.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 Detail

      • PROP_DEFAULTAUTOCOMMIT

        protected static final java.lang.String PROP_DEFAULTAUTOCOMMIT
        See Also:
        Constant Field Values
      • PROP_DEFAULTREADONLY

        protected static final java.lang.String PROP_DEFAULTREADONLY
        See Also:
        Constant Field Values
      • PROP_DEFAULTTRANSACTIONISOLATION

        protected static final java.lang.String PROP_DEFAULTTRANSACTIONISOLATION
        See Also:
        Constant Field Values
      • PROP_DEFAULTCATALOG

        protected static final java.lang.String PROP_DEFAULTCATALOG
        See Also:
        Constant Field Values
      • PROP_DRIVERCLASSNAME

        protected static final java.lang.String PROP_DRIVERCLASSNAME
        See Also:
        Constant Field Values
      • PROP_INITIALSIZE

        protected static final java.lang.String PROP_INITIALSIZE
        See Also:
        Constant Field Values
      • PROP_TESTONBORROW

        protected static final java.lang.String PROP_TESTONBORROW
        See Also:
        Constant Field Values
      • PROP_TESTONRETURN

        protected static final java.lang.String PROP_TESTONRETURN
        See Also:
        Constant Field Values
      • PROP_TESTWHILEIDLE

        protected static final java.lang.String PROP_TESTWHILEIDLE
        See Also:
        Constant Field Values
      • PROP_TESTONCONNECT

        protected static final java.lang.String PROP_TESTONCONNECT
        See Also:
        Constant Field Values
      • PROP_VALIDATIONQUERY

        protected static final java.lang.String PROP_VALIDATIONQUERY
        See Also:
        Constant Field Values
      • PROP_VALIDATIONQUERY_TIMEOUT

        protected static final java.lang.String PROP_VALIDATIONQUERY_TIMEOUT
        See Also:
        Constant Field Values
      • PROP_VALIDATOR_CLASS_NAME

        protected static final java.lang.String PROP_VALIDATOR_CLASS_NAME
        See Also:
        Constant Field Values
      • PROP_NUMTESTSPEREVICTIONRUN

        protected static final java.lang.String PROP_NUMTESTSPEREVICTIONRUN
        See Also:
        Constant Field Values
      • PROP_TIMEBETWEENEVICTIONRUNSMILLIS

        protected static final java.lang.String PROP_TIMEBETWEENEVICTIONRUNSMILLIS
        See Also:
        Constant Field Values
      • PROP_MINEVICTABLEIDLETIMEMILLIS

        protected static final java.lang.String PROP_MINEVICTABLEIDLETIMEMILLIS
        See Also:
        Constant Field Values
      • PROP_ACCESSTOUNDERLYINGCONNECTIONALLOWED

        protected static final java.lang.String PROP_ACCESSTOUNDERLYINGCONNECTIONALLOWED
        See Also:
        Constant Field Values
      • PROP_REMOVEABANDONED

        protected static final java.lang.String PROP_REMOVEABANDONED
        See Also:
        Constant Field Values
      • PROP_REMOVEABANDONEDTIMEOUT

        protected static final java.lang.String PROP_REMOVEABANDONEDTIMEOUT
        See Also:
        Constant Field Values
      • PROP_LOGABANDONED

        protected static final java.lang.String PROP_LOGABANDONED
        See Also:
        Constant Field Values
      • PROP_ABANDONWHENPERCENTAGEFULL

        protected static final java.lang.String PROP_ABANDONWHENPERCENTAGEFULL
        See Also:
        Constant Field Values
      • PROP_POOLPREPAREDSTATEMENTS

        protected static final java.lang.String PROP_POOLPREPAREDSTATEMENTS
        See Also:
        Constant Field Values
      • PROP_MAXOPENPREPAREDSTATEMENTS

        protected static final java.lang.String PROP_MAXOPENPREPAREDSTATEMENTS
        See Also:
        Constant Field Values
      • PROP_CONNECTIONPROPERTIES

        protected static final java.lang.String PROP_CONNECTIONPROPERTIES
        See Also:
        Constant Field Values
      • PROP_INTERCEPTORS

        protected static final java.lang.String PROP_INTERCEPTORS
        See Also:
        Constant Field Values
      • PROP_VALIDATIONINTERVAL

        protected static final java.lang.String PROP_VALIDATIONINTERVAL
        See Also:
        Constant Field Values
      • PROP_JMX_ENABLED

        protected static final java.lang.String PROP_JMX_ENABLED
        See Also:
        Constant Field Values
      • PROP_FAIR_QUEUE

        protected static final java.lang.String PROP_FAIR_QUEUE
        See Also:
        Constant Field Values
      • PROP_USE_EQUALS

        protected static final java.lang.String PROP_USE_EQUALS
        See Also:
        Constant Field Values
      • PROP_USE_CON_LOCK

        protected static final java.lang.String PROP_USE_CON_LOCK
        See Also:
        Constant Field Values
      • PROP_DATASOURCE

        protected static final java.lang.String PROP_DATASOURCE
        See Also:
        Constant Field Values
      • PROP_DATASOURCE_JNDI

        protected static final java.lang.String PROP_DATASOURCE_JNDI
        See Also:
        Constant Field Values
      • PROP_SUSPECT_TIMEOUT

        protected static final java.lang.String PROP_SUSPECT_TIMEOUT
        See Also:
        Constant Field Values
      • PROP_ALTERNATE_USERNAME_ALLOWED

        protected static final java.lang.String PROP_ALTERNATE_USERNAME_ALLOWED
        See Also:
        Constant Field Values
      • PROP_COMMITONRETURN

        protected static final java.lang.String PROP_COMMITONRETURN
        See Also:
        Constant Field Values
      • PROP_ROLLBACKONRETURN

        protected static final java.lang.String PROP_ROLLBACKONRETURN
        See Also:
        Constant Field Values
      • PROP_USEDISPOSABLECONNECTIONFACADE

        protected static final java.lang.String PROP_USEDISPOSABLECONNECTIONFACADE
        See Also:
        Constant Field Values
      • PROP_LOGVALIDATIONERRORS

        protected static final java.lang.String PROP_LOGVALIDATIONERRORS
        See Also:
        Constant Field Values
      • PROP_PROPAGATEINTERRUPTSTATE

        protected static final java.lang.String PROP_PROPAGATEINTERRUPTSTATE
        See Also:
        Constant Field Values
      • PROP_IGNOREEXCEPTIONONPRELOAD

        protected static final java.lang.String PROP_IGNOREEXCEPTIONONPRELOAD
        See Also:
        Constant Field Values
      • PROP_USESTATEMENTFACADE

        protected static final java.lang.String PROP_USESTATEMENTFACADE
        See Also:
        Constant Field Values
      • UNKNOWN_TRANSACTIONISOLATION

        public static final int UNKNOWN_TRANSACTIONISOLATION
        See Also:
        Constant Field Values
      • ALL_PROPERTIES

        protected static final java.lang.String[] ALL_PROPERTIES
    • Constructor Detail

      • DataSourceFactory

        public DataSourceFactory()
    • Method Detail

      • getObjectInstance

        public java.lang.Object getObjectInstance​(java.lang.Object obj,
                                                  javax.naming.Name name,
                                                  javax.naming.Context nameCtx,
                                                  java.util.Hashtable<?,​?> environment)
                                           throws java.lang.Exception

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

        Specified by:
        getObjectInstance in interface javax.naming.spi.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:
        java.lang.Exception - if an exception occurs creating the instance
      • parsePoolProperties

        public static PoolConfiguration parsePoolProperties​(java.util.Properties properties)
      • createDataSource

        public javax.sql.DataSource createDataSource​(java.util.Properties properties)
                                              throws java.lang.Exception
        Creates and configures a DataSource instance based on the given properties.
        Parameters:
        properties - the datasource configuration properties
        Returns:
        the datasource
        Throws:
        java.lang.Exception - if an error occurs creating the data source
      • createDataSource

        public javax.sql.DataSource createDataSource​(java.util.Properties properties,
                                                     javax.naming.Context context,
                                                     boolean XA)
                                              throws java.lang.Exception
        Throws:
        java.lang.Exception
      • performJNDILookup

        public void performJNDILookup​(javax.naming.Context context,
                                      PoolConfiguration poolProperties)
      • getProperties

        protected static java.util.Properties getProperties​(java.lang.String propText)
        Parse properties from the string. Format of the string must be [propertyName=property;]*.
        Parameters:
        propText - The properties string
        Returns:
        the properties