项目采用DBCP2作为连接池,现在想动态去修改连接池的密码,怎么实现呢?
本人的测试代码如下,修改密码后,获取的Connection还是没有改变,为什么呢?
本人的测试代码如下,修改密码后,获取的Connection还是没有改变,为什么呢?
package org.dbcp;
import java.sql.Connection;
import org.apache.commons.dbcp2.BasicDataSource;
public class DbcpTest {
public static void main(String[] args) throws Exception {
// 创建连接池
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
bds.setUrl("jdbc:oracle:thin:@Lijinsheng-PC:1521:orcl");
bds.setUsername("MOJO");
bds.setPassword("MOJO");
bds.setInitialSize(0);
bds.setMaxTotal(1);
bds.setMinIdle(0);
bds.setMaxIdle(1);
bds.setMaxWaitMillis(1000);
// 第一次查询
Connection conn = bds.getConnection();
if (conn.isClosed()) {
System.out.println("无法连接");
} else {
System.out.println("连接正常");
}
conn.close();
// 修改密码,再次查询
bds.setPassword("Wrong");
Connection conn2 = bds.getConnection();
if (conn2.isClosed()) {
System.out.println("无法连接");
} else {
System.out.println("连接正常");
}
conn2.close();
// 关闭连接池
bds.close();
}
}
两次输出都是:
连接正常 连接正常
解决方案:100分
.getConnection();
个人理解是已经建立连接,并没有关闭,所以你判断 close 这个还是flase ,就打印了 连接正常
个人理解是已经建立连接,并没有关闭,所以你判断 close 这个还是flase ,就打印了 连接正常