mysql connection 耗尽_JDBC MySql连接池实践,以避免耗尽连接池

作者在GlassFish上的Java-JSF Web应用中尝试使用连接池,并创建了application-scoped bean来提供Connection服务。但在使用过程中遇到连接池无法分配更多连接的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在GlassFish上有一个Java-JSF Web应用程序,我想在其中使用连接池。因此,我创建了一个applicationscoped bean,它Connection为其他bean的实例提供服务:

public class DatabaseBean {

private DataSource myDataSource;

public DatabaseBean() {

try {

Context ctx = new InitialContext();

ecwinsDataSource = (DataSource) ctx.lookup("jdbc/myDataSource");

} catch (NamingException ex) {

ex.printStackTrace();

}

}

public Connection getConnection() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {

Connection connection = myDataSource.getConnection();

System.out.println("Succesfully connected: " + connection);

//Sample: Succesfully connected: com.sun.gjc.spi.jdbc40.ConnectionHolder40@7fb213a5

return connection;

}

}

这样连接池的填充速度非常快; 在通过“db-related”视图进行一些导航后,应用程序将停止并显示以下内容:

RAR5117:无法从连接池[mysql_testPool]获取/创建连接。原因:正在使用的连接等于max-pool-size和expired max-wait-time。无法分配更多连接。RAR5114:分配连接时出错:[分配连接时出错。原因:正在使用的连接等于max-pool-size和expired max-wait-time。无法分配更多连接。] java.sql.SQLException:分配连接时出错。原因:正在使用的连接等于max-pool-size和expired max-wait-time。无法分配更多连接。

我正在关闭每种方法中的连接和其他资源。应用程序通过独立连接运行一切正常。

我究竟做错了什么?任何提示或建议将不胜感激。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值