Весна: Как вручную сбросить соединение пула соединений? - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь проверить работоспособность базы данных вручную, используя @ Aspect.
И если что-то произошло в DatabaseA (в моем случае DatabaseA больше не имеет права на запись), приложение переключится на DatabaseB.
Как я могу вручную повторно инициализировать пул соединений, чтобы я мог убедиться, что все соединения идут в DatabaseB?

@Aspect
@Component
@Order(value=1)
public class PostServiceAspect extends BaseService {

    @Before("execution(* com.some.class.execute(..))")
    public void databaseHealthCheck() {
        try {
            databaseDao.excuteHealthCheckSQL(); // execute "UPDATE table SET field = 1;"
        } catch (Exception ex) {
            databaseDao.switchTargetDatabase(); // switch to databaseB
            // How to re-initialize the connection pool
        }
    }

//DataSource config
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://testinghost:3306/devgpayment" />
    <property name="username" value="root" />
    <property name="password" value="password" />
    <property name="defaultAutoCommit" value="false" />
    <property name="maxTotal" value="40" />
    <property name="maxIdle" value="40" />
    <property name="maxWaitMillis" value="10000" />
    <property name="validationQuery" value="SELECT 1" />
    <property name="testWhileIdle" value="true" />
    <property name="timeBetweenEvictionRunsMillis" value="5000" />
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...