0

Я использую весенние бобы DataSource и DataSourceTransactionManager и подключаю их к компоненту JobRepository. Если ни один из них не знает о жизненном цикле или не имеет близкой функции, чтобы закрыть соединение, когда мое пружинное приложение закрывается. Мой процесс висит, если я вручную не вызову DataSourceUtils.releaseConnection (...) перед выходом. Я что-то упустил? Есть ли какая-то другая ошибка в моем коде, которая может вызвать это?Связи DataSource не освобождаются

Нужно ли использовать пул соединений? Как заставить весну правильно управлять жизненным циклом соединения.

@Bean 
public DataSource dataSource(@Value("${batch_db.url}") String dataSourceUrl, AWSCredentials awsCredentials) { 
    DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
    dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 
    dataSource.setUrl(dataSourceUrl); 
    dataSource.setUsername(awsCredentials.getAWSAccessKeyId()); 
    dataSource.setPassword(awsCredentials.getAWSSecretKey()); 
    return dataSource; 
} 

@Bean 
@DependsOn(value = "dataSource") 
public DataSourceTransactionManager transactionManager(DataSource dataSource) { 
    DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(); 
    transactionManager.setDataSource(dataSource); 
    return transactionManager; 
} 

@Bean 
@DependsOn(value = "dataSource") 
public JobRepository jobRepository(DataSource dataSource, PlatformTransactionManager transactionManager) throws Exception { 
    JobRepositoryFactoryBean jobRepository = new JobRepositoryFactoryBean(); 
    jobRepository.setDataSource(dataSource); 
    jobRepository.setTransactionManager(transactionManager); 
    return jobRepository.getJobRepository(); 
} 

ответ

0

Пер с Javadoc для DriverManagerDataSource (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/datasource/DriverManagerDataSource.html), что класс вслепую создает новое соединение каждый раз, когда вы связь с ним. Оттуда нет дополнительного управления соединениями, поэтому вам решать их. Если вы хотите, чтобы кто-то еще управлял соединениями, вы захотите использовать правильный пул соединений.

Смежные вопросы