Пример #1
0
  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);
  }