我通过JDBC连接多个数据源,即Hive,Oracle,Netezza等,并执行一些DDL和DML查询。
我尝试了多种连接池工具。我从HikariCP1
开始(因为它仍处于活动状态),但在hive (需要hive 2.0.0 jar)时遇到了一些问题。
所以,我尝试c3p0
和commons-dbcp
,两者都有效。
C3P0:
private static Connection getJdbcConnection(String connectionUri, String username,
String password) throws SQLException {
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setJdbcUrl(connectionUri);
cpds.setUser(username);
cpds.setPassword(password);
return cpds.getConnection();
}
DBCP:
private static Connection getJdbcConnection(String connectionUri, String username,
String password) throws SQLException {
BasicDataSource bds = new BasicDataSource();
bds.setUrl(connectionUri);
bds.setUsername(username);
bds.setPassword(password);
return bds.getConnection();
}
现在我需要支持多个数据源。我想为每个数据源创建一个单独的池(对于hive和oracle分开)。
我无法事先创建游戏池,因为我没有关于连接uri和凭据的任何先前信息。
如何使用c3p0或dbcp实现此目的?