proxool数据库连接池用法

proxool项目已经很久没人维护了.但使用者确依然广泛。他最诱人的地方是提供了一个监控管理页面.这是与其他开源数据库连接池不同的地方所在.但这个功能也不是特别强大,因为DBCP也有类似的接口,只是我们需要自己写GUI而已.
下面我们循序渐进,通过以下几种方式来进行分析.以下所有代码,都经过本人亲自运行测试.
一 准备工作
下载项目,http://proxool.sourceforge.net/
proxool-0.9.1.jar
proxool-cglib.jar
使用proxool是需要使用上面2个包
我们的项目实验,采用的是MYSQL,所以所有的例子都需要引入
mysql-connector-java-5.1.13-bin.jar

二 在纯JAVA环境中,动态设置数据库连接池.代码很简单。所有数据源设置的时候,都包含3个部分
1)基础设置
2)连接池设置
3)连接测试设置

package test.proxool;

import java.sql.SQLException;

import javax.sql.DataSource;

import org.logicalcobwebs.proxool.ProxoolDataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

public static void main(String[] args) throws SQLException {
ProxoolDataSource ds = new ProxoolDataSource();
// 基本属性
ds.setDriver("com.mysql.jdbc.Driver");
ds.setDriverUrl("jdbc:mysql://127.0.0.1:3306/cold");
ds.setUser("root");
ds.setPassword("147258369");
// 池属性
ds.setAlias("testPool");//设置连接池名
ds.setMaximumConnectionCount(100); // 最大连接数 默认值:15个
ds.setMinimumConnectionCount(10); // 最小连接数 默认值:5个
ds.setMaximumActiveTime(600 * 1000); // 最大活动时间 默认值:5分钟
ds.setMaximumConnectionLifetime(5 * 60 * 60 * 1000); // 最大连接生命周期 默认值:4小时
// 检验连接属性
ds.setHouseKeepingSleepTime(60 * 60 * 1000); // 检测连接进程的间隔时间
ds.setHouseKeepingTestSql("select count(*) from dual");// 检测连接的SQL代码
ds.setTestAfterUse(true); // 使用connection前检测
ds.setTestBeforeUse(true);// 使用connection后检测

System.out.println(ds.getConnection());
}

}

三 在纯JAVA环境J2SE下,通过SPRING来管理连接池
那我们需要额外的引入SPRING的包,以及他使用的LOG框架.我们的spring采用的是2.5.6
beans.xml和 log4j.properties要放在src根目录下
spring.jar
log4j-1.2.16.jar
commons-logging-1.1.1.jar
proxool-0.9.1.jar
proxool-cglib.jar
mysql-connector-java-5.1.13-bin.jar

spring的 beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="driverUrl" value="jdbc:mysql://127.0.0.1:3306/cold" />
<property name="user" value="root" />
<property name="password" value="147258369" />
<property name="alias" value="myPool" />

<property name="maximumConnectionCount" value="100" />
<property name="minimumConnectionCount" value="10" />

<property name="houseKeepingTestSql" value="select count(*) from dual" />
<property name="maximumActiveTime" value="300000" />
<property name="testAfterUse" value="true" />
<property name="testBeforeUse" value="true" />
<!-- 此2个属性,在应用程序中,无法使用
<property name="maximumConnectionLifetime" value="360000" />
<property name="houseKeepingSleepTime" value="360000" />
-->
</bean>
</beans>

调用代码
package test.proxool;

import java.sql.SQLException;

import javax.sql.DataSource;

import org.logicalcobwebs.proxool.ProxoolDataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

public static void main(String[] args) throws SQLException {
//从spring获取的连接池
ApplicationContext factory = new ClassPathXmlApplicationContext("beans.xml");
DataSource ds2 = (DataSource)factory.getBean("dataSource");
System.out.println(ds2.getConnection());
}

}
以上就能在spring中使用了。顺便把log4j.properties给出来吧,有没有这个文件,不会影响连接池的使用
#1) org.springframework包下面所有的日志输出的级别设为DEBUG
log4j.logger.org.springframework=DEBUG

log4j.rootLogger=INFO,appender1
#2) 控制台输出
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n
# 立即输出
log4j.appender.appender1.immediateFlush=true

四 在WEB环境J2EE下,使用数据源和他的监控功能,引入的包
spring.jar
log4j-1.2.16.jar
commons-logging-1.1.1.jar
proxool-0.9.1.jar
proxool-cglib.jar
mysql-connector-java-5.1.13-bin.jar
beans.xml和 log4j.properties要放在/WEB-INF/根目录下,也可以修改下面的路径参数,放在其他位置
log4j.properties,beans.xml配置与"三"同

web.xml文件的配制如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>springweb</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<!-- log4j 一定要在前-->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webApp.root</param-value>
</context-param>


<!-- spring初始化在后 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/beans.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- 初始化proxool 管理页面 -->
<servlet>
<servlet-name>proxool</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>proxool</servlet-name>
<url-pattern>/proxool</url-pattern>
</servlet-mapping>
</web-app>

index.jsp调用页面代码

<%@ page language="java" contentType="text/html; charset=utf8" pageEncoding="utf8"%>
<%@ page import="org.apache.log4j.Logger"%>
<%@ page import="org.springframework.context.*"%>
<%@ page import="org.springframework.context.support.*"%>
<%@ page import="javax.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<title>Insert title here</title>
</head>
<body>
<%
//从spring获取的连接池
ApplicationContext factory = new ClassPathXmlApplicationContext(url + "beans.xml");
DataSource ds2 = (DataSource)factory.getBean("dataSource");
System.out.println(ds2.getConnection());
%>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值