Свяжите аутентификацию с Oracle в CAS - PullRequest
0 голосов
/ 13 февраля 2019

Я настраиваю CAS 5.3 для выполнения аутентификации Bind против базы данных Oracle.Но я не знаю, как настроить OracleDataSource при использовании метода наложения WAR.Спасибо за любые рекомендации, спасибо.

Простая настройка драйвера и URL не работают.Кажется, что HikariDataSource используется по умолчанию, и он не реализует требуемый getConnection (имя пользователя String, пароль String).

@SneakyThrows
public static DataSource newDataSource(final AbstractJpaProperties jpaProperties) {
    final String dataSourceName = jpaProperties.getDataSourceName();
    final boolean proxyDataSource = jpaProperties.isDataSourceProxy();

    if (StringUtils.isNotBlank(dataSourceName)) {
        try {
            final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
            dsLookup.setResourceRef(false);
            final DataSource containerDataSource = dsLookup.getDataSource(dataSourceName);
            if (!proxyDataSource) {
                return containerDataSource;
            }
            return new DataSourceProxy(containerDataSource);
        } catch (final DataSourceLookupFailureException e) {
            LOGGER.warn("Lookup of datasource [{}] failed due to {} falling back to configuration via JPA properties.", dataSourceName, e.getMessage());
        }
    }

    final HikariDataSource bean = new HikariDataSource();
    if (StringUtils.isNotBlank(jpaProperties.getDriverClass())) {
        bean.setDriverClassName(jpaProperties.getDriverClass());
    }
    bean.setJdbcUrl(jpaProperties.getUrl());
    bean.setUsername(jpaProperties.getUser());
    bean.setPassword(jpaProperties.getPassword());
    bean.setLoginTimeout((int) Beans.newDuration(jpaProperties.getPool().getMaxWait()).getSeconds());
    bean.setMaximumPoolSize(jpaProperties.getPool().getMaxSize());
    bean.setMinimumIdle(jpaProperties.getPool().getMinSize());
    bean.setIdleTimeout((int) Beans.newDuration(jpaProperties.getIdleTimeout()).toMillis());
    bean.setLeakDetectionThreshold(jpaProperties.getLeakThreshold());
    bean.setInitializationFailTimeout(jpaProperties.getFailFastTimeout());
    bean.setIsolateInternalQueries(jpaProperties.isIsolateInternalQueries());
    bean.setConnectionTestQuery(jpaProperties.getHealthQuery());
    bean.setAllowPoolSuspension(jpaProperties.getPool().isSuspension());
    bean.setAutoCommit(jpaProperties.isAutocommit());
    bean.setValidationTimeout(jpaProperties.getPool().getTimeoutMillis());
    return bean;
}

Я бы потребовал, чтобы созданный выше компонент был экземпляром OracleDataSource.

...