#java #datasource
#java #источник данных
Вопрос:
Мне нужно выполнить пользовательский код до создания нового соединения в источнике данных. Я использую BasicDataSource для объединения в пул соединений. Я использую Spring JdbcTemplate с BasicDataSource, поэтому я не вызываю getConnection() вручную.
Мне нужно выполнить пользовательский код перед подключением, чтобы повторно войти в систему с учетными данными kerberos для hive jdbc.
Возможно ли сделать что-то подобное?
Я создаю соединение с приведенным ниже примером кода
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl(url);
dataSource.setUsername(userName);
dataSource.setPassword(password);
dataSource.setDriverClassName(driverClass)
return dataSource;
}
Спасибо
Комментарии:
1. Возможно все. Насколько это просто и как вы должны это делать, во многом зависит от того, как вы создаете свое приложение. Вы используете фреймворк? Любой вид внедрения зависимостей? Более конкретно, можете ли вы объяснить, как настраиваются и создаются ваши объекты BasicDataSource? Что такое управление пулом подключений?
2. Я обновил вопрос с помощью кода, используемого для создания источника данных
3. просто создайте метод kerberosLogin() и вызовите его перед строкой datasource.getConnection() или внутри вашего метода DataSource(). Я не знаю, понимаю ли я проблему, которую ты …. Хм ..?
4. Вы правильно поняли, Аран, в настоящее время я тоже делаю то же самое. т.Е. вызываю kerberos login перед выполнением любого запроса в каждой функции. Я не получаю соединение вручную, вызывая метод getConnection(), поскольку я использую BasicDataSource с Spring JdbcTemplate, поэтому пул соединений не управляется мной. Я хочу каким-то образом вызвать этот метод входа в kerberos при создании соединения в пуле соединений
5. итак, если я правильно понимаю, вы можете изменить метод создания базы данных (опубликованный вами код), но не создание соединения, верно (getConnection выходит за ваши рамки)?