Я пытаюсь проверить работоспособность базы данных вручную, используя @ 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>