当连接从池中签入和签出时,我需要切换数据库。例如,会话 X 需要接收到数据库 A 的连接,而会话 Y 需要接收到数据库 B 的连接。
我可以C3P0
使用连接定制器来做到这一点。它调用方法onCheckIn
和onCheckOut
of AbstractConnectionCustomizer
,所以我可以做类似的事情:
public class MyConnectionCustomizer extends AbstractConnectionCustomizer {
@Override
public void onCheckOut(Connection c, String parentDataSourceIdentityToken) throws Exception {
if (something) {
c.setCatalog("some database name");
}
}
@Override
public void onCheckIn(Connection c, String parentDataSourceIdentityToken) throws Exception {
c.setCatalog("some other database name");
}
}
我正在尝试切换到HikariCP,但它仅在创建连接时调用一次customize
方法。IConnectionCustomizer
那么,我怎样才能实现这样的功能呢?