项目采用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 ,就打印了 连接正常