我正在为我的网络应用实施一些运行时报告,该报告使用的是c3p0的ComboPooledDataSource
。我想知道是否有一种方法可以以编程方式获取到目前为止池中曾经存在的最大数量的连接。与ThreadPoolExecutor.getLargestPoolSize()具有相同效果的东西。
我可以在ComboPooledDataSource
上看到许多报告方法,但无法找到类似的内容。没有任何(有意义的)c3p0 javadocs没有帮助。
答案 0 :(得分:0)
我搜索了API并找不到任何东西。这是我简单的解决方法:
static final ComboPooledDataSource dataSource = new ComboPooledDataSource();
static volatile int largestPoolSize = 0;
public static Connection getConnection() throws SQLException {
Connection connection = dataSource.getConnection();
updateLargestPoolSize();
return connection;
}
private static void updateLargestPoolSize() throws SQLException {
int numConnections = dataSource.getNumConnections();
if (numConnections > largestPoolSize) {
largestPoolSize = numConnections;
}
}
如果有人可以提出更复杂的建议,请发帖。