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

news/2024/7/17 15:26:46

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

2007-4-23     推荐:973    收藏:628    评论:0     来源: e800Java频道

研究了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;
}

}

proxool.xml内容

xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>Developalias>
<driver-url>jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.6)(PORT=1521)))(CONNECT_DATA=(SID=lzqdiy)(SERVER=DEDICATED)))
driver-url>
<driver-class>oracle.jdbc.driver.OracleDriverdriver-class>
<driver-properties>
<property name="user" value="lzqdiy"/>
<property name="password" value="lzqdiy"/>
driver-properties>
<maximum-connection-count>120maximum-connection-count>
<minimum-connection-count>20minimum-connection-count>
<house-keeping-test-sql>select CURRENT_DATEhouse-keeping-test-sql>
proxool>
something-else-entirely>

通过语句:Connection con=DBConnection.getConnection();来获得一个数据库连接,当活动连接数变化时向控制台输出连接信息。

http://www.niftyadmin.cn/n/675015.html

相关文章

linux c sql max min,Linux_SQL学习笔记四 聚合函数、排序方法,聚合函数 count,max,min,avg,sum... se - phpStudy...

SQL学习笔记四 聚合函数、排序方法聚合函数 count,max,min,avg,sum...select count (*) from T_Employeeselect Max(FSalary) from T_Employee排序 ASC升序 DESC降序select * from T_Employee order by Fage先按年龄降序排列。如果年龄相同&#xff0c;则按薪水升序排列select …

java五子棋核心算法_VC编译的五子棋游戏核心算法分析(附源码)

转载请标明是引用于 http://blog.csdn.net/chenyujing1234前段时间在CSDN的资源里载得五子棋VC的源码&#xff0c;由于忘了链接地址&#xff0c;这里没有标明出处&#xff0c;请作者谅解。但我也把在VS2005上编译通过且加入清楚的注释的源码放到了下面链接&#xff0c;请下载&a…

Jquery+JSon实现的Asp.net无刷新分页控件

控件类代码&#xff1a;usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Linq;usingSystem.Text;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Reflection;usingSystem.IO;[assembly: WebResource(&q…

proxool连接池在压力下表现更加稳定

c3p0连接池在压力比较大的时候还是存在一些问题,在管理连接上可能存在bug,不过这个也只是感觉,表现出来的现象是抛出一堆异常大致意思是在关闭连接的时候出错.是不是我配置上错误了? proxool连接池在这方面表现的稍微好些,至少不存在这么明显的错误. 下面是proxool连接池的配…

javascript小技巧[转]

事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode event.shiftKey event.altKey event.ctrlKey 事件返回值 event.returnValue 鼠标位置 event.x event.y 窗…

Proxool连接池使用方法

首先从 http://proxool.sourceforge.net/ 下载proxool-0.9.0RC2.zip解压后&#xff0c;把commons-logging.jar和proxool-0.9.0RC2.jar放到工程的lib文件夹里面。[/u]方法一&#xff1a;[/u]和JDBC连接方法类似。JDBC连接方法&#xff1a;程序代码Class.forName("com.mysq…

Spring.NET学习笔记14——AOP的通知类型(基础篇) Level 300

上篇我们学习了AOP的基本概念&#xff0c;我们回顾一下上篇提到的Advice(通知):所谓通知是指拦截到joinpoint(连接点)之后所要做的事情就是通知.通知分为前置通知&#xff0c;后置通知&#xff0c;异常通知&#xff0c;环绕通知。Spring.NET的通知既可由某个类的所有对象共享&a…

写出C语言中用户自定义,15、C语言用户自定义数据类型

C语言用户自定义数据类型一、结构体定义语法&#xff1a;struct [名称]{成员列表;}[变量列表];示例程序&#xff1a;#include#includestruct Student{int age;char *name;char sex;} Davlid{24,"Davlid",M};struct{int age;char name[20];} Tom;int main(){struct St…