我尝试使用池数据源来记录有关数据库连接池的信息,即最大池大小,当前号码。正在使用的连接,繁忙的连接等。我正在使用C3P0Registry来获取池化数据源。
PooledDataSource dataSource =null;
try{
C3P0Registry.getNumPooledDataSources();
//I am sure that I am using only one data source
Iterator<Set> connectionIterator = C3P0Registry.getPooledDataSources().iterator();
dataSource = (PooledDataSource)connectionIterator.next();
}catch (Exception e) {
}
然后我将所需信息记录为:
Logger.write(LoggerConstant.DEBUG, " Connections in use: "+dataSource.getNumConnectionsAllUsers()+" , Busy Connections: "+dataSource.getNumBusyConnectionsAllUsers() +" , Idle Connections: "+ dataSource.getNumIdleConnectionsAllUsers()+" , Unclosed Orphaned Connections: "+ dataSource.getNumUnclosedOrphanedConnectionsAllUsers(), methodName);
我想知道,如果它以正确的方式实现我的目标?
另外,我对dataSource.getNumConnectionsAllUsers()和其他功能(我正在使用)的确切回复感到困惑。 javadoc中没有可用的描述。
是否有任何描述或可以在线提供教程,我可以从中了解有关这些特定功能的更多信息?
环境:Java,Hibernate,C3P0,MySQL
答案 0 :(得分:2)
尝试阅读PooledDataSource java doc。 http://www.mchange.com/projects/c3p0/apidocs/com/mchange/v2/c3p0/PooledDataSource.html
PooledDataSource.getXXXXUser()是监控和管理数据源的正确方法
此界面中的功能仅在
时才会引起您的兴趣出于管理原因,您希望密切关注 您的应用程序正在使用的所有连接的数量和状态;
解决在管理DataSource时遇到的问题,其客户端是泄漏连接的编码不良的应用程序,但是您不允许修复;
还有关javadoc中可用的方法名称的说明。
请参阅方法名称...部分
此界面中的许多方法有三种变体:
第一个变体使用为默认用户维护的池 - 通过调用no参数getConnection()创建的Connections,第二个变体允许您跟踪通过调用getConnection(用户名,密码)创建的池,以及第三个变体提供聚合信息或对所有池执行操作。