我只是认为在一个大型Web应用程序中,每个使用该应用程序的客户端都会为数据库建立数十个连接,因此很可能很少有连接未被关闭。 虽然我们必须明确关闭所有连接,但是,您知道,可能存在错误。如果发生这种情况,那么几天后我们可能会发现我们的连接池已达到其最大大小,并且应用程序未运行无法获得连接。
实际上我正在为我的一个项目面临这个问题,每当连接池达到其最大大小时,我只是重启服务器,这是不好的。
我很想知道如何以更好的方式处理这个问题,我想知道有这样的事情,我可以定期关闭我的连接池中所有未使用的活动连接,例如每72小时用java代码?
我说的是Java / J2ee技术,我的服务器是Glassfish Application Server2.1。
编辑:我正在使用Glassfish应用服务器提供的连接池,而不是任何第三方连接池,并使用此池使用JNDI DataSource。
需要你的建议........
由于
答案 0 :(得分:0)
您可以使用MiniConnectionPoolManager。它是一个轻量级的独立Java JDBC连接池管理器。
看一下这篇文章http://www.h2database.com/javadoc/org/h2/jdbcx/JdbcConnectionPool.html。和dispose()方法。
支持许多jdbc驱动程序http://www.source-code.biz/miniconnectionpoolmanager/
答案 1 :(得分:0)
如果我在没有提供开箱即用的良好连接池的情况下解决这个问题,我会按如下方式进行:
IllegalStateException
。我的两分钱!
修改:C3P0已unreturnedConnectionTimeout
,可配置为处理从池中取出的这些类型的连接,但不会通过close()
调用返回。