Example usage for org.springframework.jdbc.datasource.lookup JndiDataSourceLookup JndiDataSourceLookup

List of usage examples for org.springframework.jdbc.datasource.lookup JndiDataSourceLookup JndiDataSourceLookup

Introduction

In this page you can find the example usage for org.springframework.jdbc.datasource.lookup JndiDataSourceLookup JndiDataSourceLookup.

Prototype

public JndiDataSourceLookup() 

Source Link

Usage

From source file:org.flowable.rest.conf.DatabaseConfiguration.java

@Bean
public DataSource dataSource() {

    String dataSourceJndiName = environment.getProperty("datasource.jndi.name");
    if (StringUtils.isNotEmpty(dataSourceJndiName)) {

        LOGGER.info("Using jndi datasource '{}'", dataSourceJndiName);
        JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
        dsLookup.setResourceRef(/*  w  w  w.  j  a v  a2 s  .c  o  m*/
                environment.getProperty("datasource.jndi.resourceRef", Boolean.class, Boolean.TRUE));
        DataSource dataSource = dsLookup.getDataSource(dataSourceJndiName);
        return dataSource;

    } else {

        String jdbcUrl = environment.getProperty("datasource.url", "jdbc:h2:mem:flowable;DB_CLOSE_DELAY=1000");
        String jdbcDriver = environment.getProperty("datasource.driver", "org.h2.Driver");
        String jdbcUsername = environment.getProperty("datasource.username", "sa");
        String jdbcPassword = environment.getProperty("datasource.password", "");

        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl(jdbcUrl);
        dataSource.setDriverClassName(jdbcDriver);
        dataSource.setUsername(jdbcUsername);
        dataSource.setPassword(jdbcPassword);

        /*
         * Connection pool settings (see https://github.com/brettwooldridge/HikariCP)
         */

        // Timeout to wait for a connection of the pool
        Long connectionTimeout = environment.getProperty("datasource.connection-timeout", Long.class);
        if (connectionTimeout == null) {
            // Backwards compatible property name (pre 6.3.0)
            connectionTimeout = environment.getProperty("datasource.connection.timeout", Long.class);
        }
        if (connectionTimeout != null) {
            dataSource.setConnectionTimeout(connectionTimeout);
        }

        // Minimum amount of connections to keep idle in the pool
        Integer minIdle = environment.getProperty("datasource.min-pool-size", Integer.class);
        if (minIdle == null) {
            // Backwards compatible property name (pre 6.3.0)
            minIdle = environment.getProperty("datasource.connection.minidle", Integer.class);
        }
        if (minIdle != null) {
            dataSource.setMinimumIdle(minIdle);
        }

        // Maximum amount of connections in the pool
        Integer maxPoolSize = environment.getProperty("datasource.max-pool-size", Integer.class);
        if (maxPoolSize == null) {
            // Backwards compatible property name (pre 6.3.0)
            maxPoolSize = environment.getProperty("datasource.connection.maxpoolsize", Integer.class);
        }
        if (maxPoolSize != null) {
            dataSource.setMaximumPoolSize(maxPoolSize);
        }

        // Time in milliseconds to indicate when a connection will be removed from the pool. 
        // Use 0 to never remove an idle connection from the pool 
        Long idleTimeout = environment.getProperty("datasource.max-idle-time", Long.class);
        if (idleTimeout != null) {
            // Property has been historically expressed in seconds, but Hikari expects milliseconds
            idleTimeout = idleTimeout * 1000;
        } else if (idleTimeout == null) {
            // Backwards compatible property name (pre 6.3.0)
            idleTimeout = environment.getProperty("datasource.connection.idletimeout", Long.class);
        }
        if (idleTimeout != null) {
            dataSource.setIdleTimeout(idleTimeout);
        }

        // The maximum lifetime of a connection in the pool
        Long maxLifetime = environment.getProperty("datasource.connection.max-lifetime", Long.class);
        if (maxLifetime == null) {
            maxLifetime = environment.getProperty("datasource.connection.maxlifetime", Long.class);
        }
        if (maxLifetime != null) {
            dataSource.setMaxLifetime(maxLifetime);
        }

        // Test query
        String testQuery = environment.getProperty("datasource.test-query");
        if (testQuery == null) {
            // Backwards compatible property name (pre 6.3.0)
            testQuery = environment.getProperty("datasource.preferred-test-query");
        }
        if (testQuery != null) {
            dataSource.setConnectionTestQuery(testQuery);
        }

        if (LOGGER.isInfoEnabled()) {
            LOGGER.info("Configuring datasource with following properties");
            LOGGER.info("Datasource driver: {}", jdbcDriver);
            LOGGER.info("Datasource url: {}", jdbcUrl);
            LOGGER.info("Datasource user name: {}", jdbcUsername);
            LOGGER.info("Min pool size | Max pool size | {} | {}", minIdle != null ? minIdle : "default",
                    maxPoolSize != null ? maxPoolSize : "default");
        }

        return dataSource;
    }

}

From source file:org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.java

/**
 * Specify the JDBC DataSourceLookup that provides DataSources for the
 * persistence provider, resolving data source names in {@code persistence.xml}
 * against Spring-managed DataSource instances.
 * <p>Default is JndiDataSourceLookup, which resolves DataSource names as
 * JNDI names (as defined by standard JPA). Specify a BeanFactoryDataSourceLookup
 * instance if you want DataSource names to be resolved against Spring bean names.
 * <p>Alternatively, consider passing in a map from names to DataSource instances
 * via the "dataSources" property. If the {@code persistence.xml} file
 * does not define DataSource names at all, specify a default DataSource
 * via the "defaultDataSource" property.
 * @see org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup
 * @see org.springframework.jdbc.datasource.lookup.BeanFactoryDataSourceLookup
 * @see #setDataSources//w ww.  ja  v a  2 s  . c o m
 * @see #setDefaultDataSource
 */
public void setDataSourceLookup(@Nullable DataSourceLookup dataSourceLookup) {
    this.dataSourceLookup = (dataSourceLookup != null ? dataSourceLookup : new JndiDataSourceLookup());
}