Class DataSourceFactory

  • All Implemented Interfaces:
    PooledDataSourceFactory

    public class DataSourceFactory
    extends Object
    implements PooledDataSourceFactory
    A factory for pooled ManagedDataSources.

    Configuration Parameters:

    Name Default Description
    url REQUIRED The URL of the server.
    driverClass none The fully qualified class name of the JDBC driver class. Only required if there were no JDBC drivers registered in META-INF/services/java.sql.Driver.
    user none The username used to connect to the server.
    password none The password used to connect to the server.
    removeAbandoned false Remove abandoned connections if they exceed the removeAbandonedTimeout. If set to true a connection is considered abandoned and eligible for removal if it has been in use longer than the removeAbandonedTimeout and the condition for abandonWhenPercentageFull is met.
    removeAbandonedTimeout 60 seconds The time before a database connection can be considered abandoned.
    abandonWhenPercentageFull 0 Connections that have been abandoned (timed out) won't get closed and reported up unless the number of connections in use are above the percentage defined by abandonWhenPercentageFull. The value should be between 0-100.
    alternateUsernamesAllowed false Set to true if the call getConnection(username,password) is allowed. This is used for when the pool is used by an application accessing multiple schemas. There is a performance impact turning this option on, even when not used.
    commitOnReturn false Set to true if you want the connection pool to commit any pending transaction when a connection is returned.
    rollbackOnReturn false Set to true if you want the connection pool to rollback any pending transaction when a connection is returned.
    autoCommitByDefault JDBC driver's default The default auto-commit state of the connections.
    readOnlyByDefault JDBC driver's default The default read-only state of the connections.
    properties none Any additional JDBC driver parameters.
    defaultCatalog none The default catalog to use for the connections.
    defaultTransactionIsolation JDBC driver default The default transaction isolation to use for the connections. Can be one of none, default, read-uncommitted, read-committed, repeatable-read, or serializable.
    useFairQueue true If true, calls to getConnection are handled in a FIFO manner.
    initialSize 10 The initial size of the connection pool. May be zero, which will allow you to start the connection pool without requiring the DB to be up. In the latter case the minSize must also be set to zero.
    minSize 10 The minimum size of the connection pool.
    maxSize 100 The maximum size of the connection pool.
    initializationQuery none A custom query to be run when a connection is first created.
    logAbandonedConnections false If true, logs stack traces of abandoned connections.
    logValidationErrors false If true, logs errors when connections fail validation.
    maxConnectionAge none If set, connections which have been open for longer than maxConnectionAge are closed when returned.
    maxWaitForConnection 30 seconds If a request for a connection is blocked for longer than this period, an exception will be thrown.
    minIdleTime 1 minute The minimum amount of time an connection must sit idle in the pool before it is eligible for eviction.
    validationQuery SELECT 1 The SQL query that will be used to validate connections from this pool before returning them to the caller or pool. If specified, this query does not have to return any data, it just can't throw a SQLException.
    validationQueryTimeout none The timeout before a connection validation queries fail.
    checkConnectionWhileIdle true Set to true if query validation should take place while the connection is idle.
    checkConnectionOnBorrow false Whether or not connections will be validated before being borrowed from the pool. If the connection fails to validate, it will be dropped from the pool, and another will be borrowed.
    checkConnectionOnConnect true Whether or not connections will be validated before being added to the pool. If the connection fails to validate, it won't be added to the pool.
    checkConnectionOnReturn false Whether or not connections will be validated after being returned to the pool. If the connection fails to validate, it will be dropped from the pool.
    autoCommentsEnabled true Whether or not ORMs should automatically add comments.
    evictionInterval 5 seconds The amount of time to sleep between runs of the idle connection validation, abandoned cleaner and idle pool resizing.
    validationInterval 30 seconds To avoid excess validation, only run validation once every interval.
    validatorClassName (none) Name of a class of a custom Validator implementation, which will be used for validating connections.
    jdbcInterceptors (none) A semicolon separated list of classnames extending JdbcInterceptor
    ignoreExceptionOnPreLoad false Flag whether ignore error of connection creation while initializing the pool. Set to true if you want to ignore error of connection creation while initializing the pool. Set to false if you want to fail the initialization of the pool by throwing exception.
    • Constructor Detail

      • DataSourceFactory

        public DataSourceFactory()
    • Method Detail

      • setAutoCommentsEnabled

        public void setAutoCommentsEnabled​(boolean autoCommentsEnabled)
      • setDriverClass

        public void setDriverClass​(@Nullable String driverClass)
      • getUser

        public @Nullable String getUser()
      • setUser

        public void setUser​(@Nullable String user)
      • getPassword

        public @Nullable String getPassword()
      • setPassword

        public void setPassword​(@Nullable String password)
      • setUrl

        public void setUrl​(String url)
      • setProperties

        public void setProperties​(Map<String,​String> properties)
      • getMaxWaitForConnection

        public Duration getMaxWaitForConnection()
      • setMaxWaitForConnection

        public void setMaxWaitForConnection​(Duration maxWaitForConnection)
      • setValidationQuery

        public void setValidationQuery​(@Nullable String validationQuery)
      • getMinSize

        public int getMinSize()
      • setMinSize

        public void setMinSize​(int minSize)
      • getMaxSize

        public int getMaxSize()
      • setMaxSize

        public void setMaxSize​(int maxSize)
      • getCheckConnectionWhileIdle

        public boolean getCheckConnectionWhileIdle()
      • setCheckConnectionWhileIdle

        public void setCheckConnectionWhileIdle​(boolean checkConnectionWhileIdle)
      • isMinSizeLessThanMaxSize

        @ValidationMethod(message=".minSize must be less than or equal to maxSize")
        public boolean isMinSizeLessThanMaxSize()
      • isInitialSizeLessThanMaxSize

        @ValidationMethod(message=".initialSize must be less than or equal to maxSize")
        public boolean isInitialSizeLessThanMaxSize()
      • isInitialSizeGreaterThanMinSize

        @ValidationMethod(message=".initialSize must be greater than or equal to minSize")
        public boolean isInitialSizeGreaterThanMinSize()
      • getAbandonWhenPercentageFull

        public int getAbandonWhenPercentageFull()
      • setAbandonWhenPercentageFull

        public void setAbandonWhenPercentageFull​(int percentage)
      • isAlternateUsernamesAllowed

        public boolean isAlternateUsernamesAllowed()
      • setAlternateUsernamesAllowed

        public void setAlternateUsernamesAllowed​(boolean allow)
      • getCommitOnReturn

        public boolean getCommitOnReturn()
      • getRollbackOnReturn

        public boolean getRollbackOnReturn()
      • setCommitOnReturn

        public void setCommitOnReturn​(boolean commitOnReturn)
      • setRollbackOnReturn

        public void setRollbackOnReturn​(boolean rollbackOnReturn)
      • getAutoCommitByDefault

        public @Nullable Boolean getAutoCommitByDefault()
      • setAutoCommitByDefault

        public void setAutoCommitByDefault​(@Nullable Boolean autoCommit)
      • getDefaultCatalog

        public @Nullable String getDefaultCatalog()
      • setDefaultCatalog

        public void setDefaultCatalog​(@Nullable String defaultCatalog)
      • getReadOnlyByDefault

        public @Nullable Boolean getReadOnlyByDefault()
      • setReadOnlyByDefault

        public void setReadOnlyByDefault​(@Nullable Boolean readOnlyByDefault)
      • getUseFairQueue

        public boolean getUseFairQueue()
      • setUseFairQueue

        public void setUseFairQueue​(boolean fair)
      • getInitialSize

        public int getInitialSize()
      • setInitialSize

        public void setInitialSize​(int initialSize)
      • getInitializationQuery

        public @Nullable String getInitializationQuery()
      • setInitializationQuery

        public void setInitializationQuery​(@Nullable String query)
      • getLogAbandonedConnections

        public boolean getLogAbandonedConnections()
      • setLogAbandonedConnections

        public void setLogAbandonedConnections​(boolean log)
      • getLogValidationErrors

        public boolean getLogValidationErrors()
      • setLogValidationErrors

        public void setLogValidationErrors​(boolean log)
      • setMaxConnectionAge

        public void setMaxConnectionAge​(@Nullable Duration age)
      • getMinIdleTime

        public Duration getMinIdleTime()
      • setMinIdleTime

        public void setMinIdleTime​(Duration time)
      • getCheckConnectionOnBorrow

        public boolean getCheckConnectionOnBorrow()
      • setCheckConnectionOnBorrow

        public void setCheckConnectionOnBorrow​(boolean checkConnectionOnBorrow)
      • getCheckConnectionOnConnect

        public boolean getCheckConnectionOnConnect()
      • setCheckConnectionOnConnect

        public void setCheckConnectionOnConnect​(boolean checkConnectionOnConnect)
      • getCheckConnectionOnReturn

        public boolean getCheckConnectionOnReturn()
      • setCheckConnectionOnReturn

        public void setCheckConnectionOnReturn​(boolean checkConnectionOnReturn)
      • getEvictionInterval

        public Duration getEvictionInterval()
      • setEvictionInterval

        public void setEvictionInterval​(Duration interval)
      • getValidationInterval

        public Duration getValidationInterval()
      • setValidationInterval

        public void setValidationInterval​(Duration validationInterval)
      • getValidatorClassName

        public Optional<String> getValidatorClassName()
      • setValidatorClassName

        public void setValidatorClassName​(Optional<String> validatorClassName)
      • setValidationQueryTimeout

        public void setValidationQueryTimeout​(@Nullable Duration validationQueryTimeout)
      • isRemoveAbandoned

        public boolean isRemoveAbandoned()
      • setRemoveAbandoned

        public void setRemoveAbandoned​(boolean removeAbandoned)
      • getRemoveAbandonedTimeout

        public Duration getRemoveAbandonedTimeout()
      • setRemoveAbandonedTimeout

        public void setRemoveAbandonedTimeout​(Duration removeAbandonedTimeout)
      • setJdbcInterceptors

        public void setJdbcInterceptors​(Optional<String> jdbcInterceptors)
      • isIgnoreExceptionOnPreLoad

        public boolean isIgnoreExceptionOnPreLoad()
      • setIgnoreExceptionOnPreLoad

        public void setIgnoreExceptionOnPreLoad​(boolean ignoreExceptionOnPreLoad)
      • build

        public ManagedDataSource build​(com.codahale.metrics.MetricRegistry metricRegistry,
                                       String name)
        Description copied from interface: PooledDataSourceFactory
        Builds a new JDBC data source backed by the connection pool and managed by Dropwizard.
        Specified by:
        build in interface PooledDataSourceFactory
        Parameters:
        metricRegistry - the application metric registry
        name - name of the connection pool
        Returns:
        a new JDBC data source as ManagedDataSource