监视Bone cp连接池

时间:2012-08-06 17:41:54

标签: java hibernate connection connection-pooling bonecp

我们正在尝试从c3p0迁移到bonecp连接池。我们使用hibernate作为ORM工具。

现在,有没有办法监控boncecp中的连接,比如在特定时间点了解池中最大可用和繁忙连接以及池中是否有任何未返回的连接等?

感谢您的帮助

1 个答案:

答案 0 :(得分:7)

可以通过BoneCP连接池类(BoneCP)访问许多监视信息。这是注册为托管bean,因此如果您使用jconsole或其他一些监视工具,您应该获得此信息的详细视图,例如:

BoneCP MBean Screenshot

如果需要,您可以使用BoneCPBoneCPDataSource获取BoneCPDataSource#getPool()个实例:

/**
 * Get a status information of the JDBC connections.
 * 
 * @return The status information of the JDBC connections.
 */
public String getConnectionStatus() {
    String status = "unknown";
    if (dataSource instanceof BoneCPDataSource) {

        BoneCPDataSource bcpDataSource = (BoneCPDataSource) dataSource;
        BoneCP bcp = bcpDataSource.getPool();
        status = "JDBC connections: " + bcp.getTotalLeased()
            + " in use / " + bcp.getTotalFree()
            + " in pool / total created "
            + bcp.getTotalCreatedConnections();

    }
    return status;
}