private void configureDataSource() { // This class is initialized by Shiro, not Guice - we need to retrieve the config manually final DaoConfig config = new ConfigurationObjectFactory(System.getProperties()).build(DaoConfig.class); final BoneCPConfig dbConfig = new BoneCPConfig(); dbConfig.setJdbcUrl(config.getJdbcUrl()); dbConfig.setUsername(config.getUsername()); dbConfig.setPassword(config.getPassword()); dbConfig.setMinConnectionsPerPartition(config.getMinIdle()); dbConfig.setMaxConnectionsPerPartition(config.getMaxActive()); dbConfig.setConnectionTimeout( config.getConnectionTimeout().getPeriod(), config.getConnectionTimeout().getUnit()); dbConfig.setIdleMaxAge(config.getIdleMaxAge().getPeriod(), config.getIdleMaxAge().getUnit()); dbConfig.setMaxConnectionAge( config.getMaxConnectionAge().getPeriod(), config.getMaxConnectionAge().getUnit()); dbConfig.setIdleConnectionTestPeriod( config.getIdleConnectionTestPeriod().getPeriod(), config.getIdleConnectionTestPeriod().getUnit()); dbConfig.setPartitionCount(1); dbConfig.setDefaultTransactionIsolation("READ_COMMITTED"); dbConfig.setDisableJMX(false); setDataSource(new BoneCPDataSource(dbConfig)); }
@Override public BoneCPConfig get() { BoneCPConfig config = new BoneCPConfig(); config.setJdbcUrl(settings.getString(JDBC_URL, DEFAULT_JDBC_URL)); config.setPartitionCount(settings.getInt(PARTITION_COUNT, DEFAULT_PARTITION_COUNT)); config.setMinConnectionsPerPartition( settings.getInt(MIN_CONNECTIONS_PER_PARTITION, DEFAULT_MIN_CONNECTIONS_PER_PARTITION)); config.setMaxConnectionsPerPartition( settings.getInt(MAX_CONNECTIONS_PER_PARTITION, DEFAULT_MAX_CONNECTIONS_PER_PARTITION)); config.setCloseOpenStatements( settings.getBoolean(CLOSE_OPEN_STATEMENTS, DEFAULT_CLOSE_OPEN_STATEMENTS)); config.setCloseConnectionWatch( settings.getBoolean(CLOSE_CONNECTION_WATCH, DEFAULT_CLOSE_CONNECTION_WATCH)); config.setDefaultReadOnly(settings.getBoolean(READ_ONLY, DEFAULT_READ_ONLY)); config.setAcquireRetryAttempts( settings.getInt(ACQUIRE_RETRY_ATTEMPTS, DEFAULT_ACQUIRE_RETRY_ATTEMPTS)); Long timeout = settings.getLong(CONNECTION_TIMEOUT_MINUTES); if (timeout != null) { config.setConnectionTimeout(timeout, TimeUnit.MINUTES); } Long maxConnectionAgeInMinutes = settings.getLong(MAX_CONNECTION_AGE_MINUTES); if (maxConnectionAgeInMinutes != null) { config.setMaxConnectionAgeInSeconds(maxConnectionAgeInMinutes * 60); } Long idleMaxAge = settings.getLong(IDLE_MAX_AGE_SECONDS); if (idleMaxAge != null) { config.setIdleMaxAgeInSeconds(idleMaxAge); } String u = settings.getString(JDBC_USER, DEFAULT_JDBC_USER); String p = settings.getString(JDBC_PASSWORD); if (u != null && !u.trim().isEmpty()) { config.setUsername(u); } if (p != null && !p.trim().isEmpty()) { config.setPassword(p); } return postConfig.onConfigure(config); }