为了账号安全,请及时绑定邮箱和手机立即绑定

Apache dbcp 连接池无法正常工作

Apache dbcp 连接池无法正常工作

MMTTMM 2022-12-28 10:25:49
我正在尝试按照此处的教程mysql使用连接池连接到数据库:apache dbcp2https://git-wip-us.apache.org/repos/asf?p=commons-dbcp.git;a=blob;f=doc/PoolingDataSourceExample.java;h=2a12c74898930b9623223db1597b8a8052a6f1df;hb=HEAD返回连接的我的数据库连接类如下所示:public class DbConnection {private static interface Singleton {    final DbConnection INSTANCE = new DbConnection();}private final PoolingDataSource<PoolableConnection> dataSource;private DbConnection() {    // A ConnectionFactory that the pool will use to create Connections.    DriverManagerConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, user, pass);  //url,user,pass for db connnection    //implement the pooling functionality.    PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, null);    GenericObjectPoolConfig config = new GenericObjectPoolConfig();    config.setMaxWaitMillis(500);    config.setMaxTotal(20);    config.setMaxIdle(5);    config.setMinIdle(5);    //PoolingDataSource expect an ObjectPool    ObjectPool<PoolableConnection> connectionPool = new GenericObjectPool<>(poolableConnectionFactory, config);    // Set the poolableConnectionFactory's pool property to the owning pool    poolableConnectionFactory.setPool(connectionPool);    this.dataSource = new PoolingDataSource<>(connectionPool);}public static Connection getCon() throws SQLException {    return Singleton.INSTANCE.dataSource.getConnection();}} 我正在使用 apache jmeter 来测试连接并从我的 mysql 数据库返回一些东西。我创建了 100 个用户,启动时间(以秒为单位)为 2 秒。我创建了一个Http request,当我试图在其中查看我的响应时,view results tree我成功地获得了前 20 个请求的响应。来自(21 到 100)的后续请求有空白响应。我经历了许多涉及的问题:java.sql.SQLException:无法获取连接,池错误等待空闲对象超时
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

您没有关闭Connection对象,您必须在 try-with-resources 块中声明此类变量:

try (Connection conn = DbConnection.getCon(); 
       PreparedStatement ps = conn.prepareStatement("SELECT id FROM test WHERE id =?;")) {

您还需要关闭ResultSet,要么在方法中调用close方法,要么ResultSet使用返回它的新方法将其添加到 try-with-resources 块


查看完整回答
反对 回复 2022-12-28
  • 1 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信