监控Proxool连接池的活动连接变化情况

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

研究了PRoxool连接池的源代码后完成下面的程序,Proxool连接池的配置过程略。

/**//*

*@author 我为J狂 建立日期 2007-4-18

*

*/

package net.blogjava.lzqdiy;

import java.net.URL;

import java.sql.*;

import org.logicalcobwebs.proxool.ProxoolException;

import org.logicalcobwebs.proxool.ProxoolFacade;

import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;

import org.logicalcobwebs.proxool.admin.SnapshotIF;

public class DBConnection

{

private static boolean initialized = false;

private static int activeCount = 0;

public static Connection getConnection() throws SQLException

{

Connection connection = null;

if (!initialized)

{

init();

}

connection = DriverManager.getConnection("proxool.Develop");

try

{

SnapshotIF snapshot = ProxoolFacade.getSnapshot("Develop", true);

int curActiveCount = snapshot.getActiveConnectionCount();// 获得活动连接数

int availableCount = snapshot.getAvailableConnectionCount();// 获得可得到的连接数

int maxCount = snapshot.getMaximumConnectionCount();// 获得总连接数

if (curActiveCount != activeCount)// 当活动连接数变化时输出信息

{

System.out.println("----------------------------------");

System.out

.println(curActiveCount + "(active) " + availableCount

+ "(available) " + maxCount + "(max)");

System.out.println("----------------------------------");

activeCount = curActiveCount;

}

} catch (ProxoolException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

if (connection != null)

{

return connection;

} else

{

throw new NullPointerException(

"Didn't get connection, which probably means that no Driver accepted the URL");

}

}

private static void init()

{

String fileName = "proxool.xml";

URL resourceURL = null;

try

{

if (Thread.currentThread().getContextClassLoader() != null)

{

resourceURL = Thread.currentThread().getContextClassLoader()

.getResource(fileName);

}

if (resourceURL == null)

{

resourceURL = DBConnection.class.getClassLoader().getResource(

fileName);

}

JAXPConfigurator.configure(resourceURL.getFile(), false);

Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");

} catch (ClassNotFoundException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ProxoolException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

initialized = true;

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航