Java EE显示连接池中剩余的连接数

时间:2014-08-26 07:56:14

标签: java java-ee oracle11g oracle10g connection-pooling

我的系统在连接池中遇到一些连接泄漏。我想定期列出连接池的一些统计信息,我该怎么做?例如,Current Capacity,Active Connections High Count,Connections Total Count,Leaked Connection Count等

我正在使用javax.sql.DataSource从连接池中检索连接。但我找不到任何可以检索这些连接池信息的接口。有什么想法吗?

我正在使用Oracle DB和Java EE作为我的服务器端脚本。

1 个答案:

答案 0 :(得分:1)

javax.sql.DataSource是一个接口,它只是抽象数据源。它不涉及提供池化连接。

连接池负责提供与数据库(数据源)的池化,可重用连接。

首先,您需要找出您正在使用的连接池。连接池实现通常提供一种查询活动连接数等方法的方法。

例如,Apache DBCP有一个BasicDataSource类,它是一个连接池,它有一个方法:

BasicDataSource.getMaxTotal();
BasicDataSource.getNumActive();
BasicDataSource.getNumIdle();
BasicDataSource.getMinIdle();
BasicDataSource.getMaxIdle();

由于您提到您正在使用Oracle DB,因此您的连接池很可能是OracleOCIConnectionPool(Oracle JDBC驱动程序的一部分),它提供:

OracleOCIConnectionPool.getMaxLimit();
OracleOCIConnectionPool.getPoolSize();
OracleOCIConnectionPool.getActiveSize();
OracleOCIConnectionPool.getMinLimit();