知识大全 Proxool 0.9.1的配置与应用
Posted 语句
篇首语:君不见长松卧壑困风霜,时来屹立扶明堂。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Proxool 0.9.1的配置与应用相关的知识,希望对你有一定的参考价值。
Proxool 0.9.1的配置与应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Proxool老牌的数据库连接池了 褒贬不一 性能上还行 目前最新版本是 相对之前版本的配置有些变动 这里以MySQL 为例做一个简单数据库连接池配置
环境
MySQL x
JDK
Proxool
一 配置文件
proxool xml
<?xml version= encoding= UTF ?>
<something else entirely>
<proxool>
<alias>ds</alias>
<! 数据源的别名 >
<driver url>jdbc:mysql:// : /testdb?useUnicode=true&characterEncoding=utf &autoReconnect=true&zeroDateTimeBehavior=convertToNull</driver url>
<! url连接串 >
<driver class> mysql jdbc Driver</driver class>
<! 驱动类 >
<driver properties>
<property name= user value= v />
<! 用户名 >
<property name= password value= v />
<! 密码 >
</driver properties>
<! 是指在任一时刻 可以(同时)建立的最大连接数 也就是说 就是已经请求的 但还没可用的新连接数量 >
<simultaneous build throttle> </simultaneous build throttle>
<! 最大连接数(默认 个) 超过了这个连接数 再有请求时 就排在队列中等候 最大的等待请求数由maximum new connections决定 >
<maximum connection count> </maximum connection count>
<! 最小连接数(默认 个) >
<minimum connection count> </minimum connection count>
<! proxool自动侦察各个连接状态的时间间隔(毫秒) 侦察到空闲的连接就马上回收 超时的销毁 默认 秒 >
<house keeping sleep time> </house keeping sleep time>
<! 最少保持的空闲连接数(默认 个) >
<prototype count> </prototype count>
<! 在使用之前测试 >
<test before use>true</test before use>
<! 用于保持连接的测试语句 >
<house keeping test sql>select </house keeping test sql>
</proxool>
</something else entirely>
粗体部分是变化部分 上面有详细说明!
二 测试类
package lavasoft;
import mons logging Log;
import mons logging LogFactory;
import logicalcobwebs proxool ProxoolException;
import logicanfiguration JAXPConfigurator;
import java io FileNotFoundException;
import java io IOException;
import java sql *;
import java util List;
import java util Properties;
/**
* 简单的JDBC工具类
*
* @author leizhimin : :
*/
public class MyDB
private static final Log log = LogFactory getLog(MyDB class);
private static final boolean useDBPool = true; //是否使用数据库连接池
private static String dburl = null;
private static String user = null;
private static String password = null;
private static Properties props = new Properties();
static
init();
public static void init()
if (useDBPool)
try
nfigure( proxool xml false);
// nfigure( src/proxool xml false);
catch (ProxoolException e)
e printStackTrace();
return;
try
// props load(new FileInputStream( /jdbc properties ));
props load(MyDB class getResourceAsStream( /jdbc properties ));
catch (IOException e)
log error( #ERROR# :系统加载sysconfig properties配置文件异常 请检查! e);
dburl = props getProperty( jdbc url );
user = props getProperty( jdbc username ) trim();
password = props getProperty( jdbc password ) trim();
System out println(dburl);
System out println(user);
System out println(password);
//注册驱动类
try
Class forName(props getProperty( jdbc driver ));
catch (ClassNotFoundException e)
log error( #ERROR# :加载数据库驱动异常 请检查! e);
throw new RuntimeException(e);
public static void main(String[] args) throws FileNotFoundException
for (int i = ; i < ; i++)
Connection conn = getConnection();
System out println(conn == null ? 没连上 : 连上了 );
// System out println( );
// closeConnection(conn);
/**
* 创建一个数据库连接
*
* @return 一个数据库连接
*/
public static Connection getConnection()
Connection conn = null;
//根据连接池配置创建数据库连接
if (useDBPool)
try
conn = DriverManager getConnection( proxool ds );
catch (SQLException e)
log error( #ERROR# :无法从数据库连接池获取到数据库连接! );
throw new RuntimeException(e);
return conn;
//根据JDBC配置创建数据库连接
try
conn = DriverManager getConnection(dburl user password);
catch (SQLException e)
log error( #ERROR# :创建数据库连接发生异常 请检查! e);
throw new RuntimeException(e);
return conn;
/**
* 在一个数据库连接上执行一个静态SQL语句查询
*
* @param conn 数据库连接
* @param staticSql 静态SQL语句字符串
* @return 返回查询结果集ResultSet对象
*/
public static ResultSet executeQuery(Connection conn String staticSql)
ResultSet rs = null;
try
//创建执行SQL的对象
Statement stmt = conn createStatement();
//执行SQL 并获取返回结果
rs = stmt executeQuery(staticSql);
catch (SQLException e)
log error( #ERROR# :执行SQL语句出错 请检查!\\n + staticSql e);
throw new RuntimeException(e);
return rs;
/**
* 在一个数据库连接上执行一个静态SQL语句
*
* @param conn 数据库连接
* @param staticSql 静态SQL语句字符串
*/
public static void executeSQL(Connection conn String staticSql)
try
//创建执行SQL的对象
Statement stmt = conn createStatement();
//执行SQL 并获取返回结果
stmt execute(staticSql);
catch (SQLException e)
log error( #ERROR# :执行SQL语句出错 请检查!\\n + staticSql e);
throw new RuntimeException(e);
/**
* 在一个数据库连接上执行一批静态SQL语句
*
* @param conn 数据库连接
* @param sqlList 静态SQL语句字符串集合
*/
public static void executeBatchSQL(Connection conn List<String> sqlList)
try
//创建执行SQL的对象
Statement stmt = conn createStatement();
for (String sql : sqlList)
stmt addBatch(sql);
//执行SQL 并获取返回结果
stmt executeBatch();
catch (SQLException e)
log error( #ERROR# :执行批量SQL语句出错 请检查! e);
public static void closeConnection(Connection conn)
if (conn == null) return;
try
if (!conn isClosed())
//关闭数据库连接
conn close();
catch (SQLException e)
log error( #ERROR# :关闭数据库连接发生异常 请检查! e);
throw new RuntimeException(e);
运行结果
[INFO] : : [ logicalcobwebs proxool ProxoolFacade] Proxool ( Aug : )
连上了
连上了
连上了
连上了
连上了
[INFO] : : [ logicalcobwebs proxool ds] Shutting down ds pool immediately [Shutdown Hook]
[INFO] : : [ logicalcobwebs proxool ConnectionPool] Waiting until Thu Feb : : CST for all connections to bee inactive (active count is )
[WARN] : : [ logicalcobwebs proxool ConnectionPool] Shutdown waited for milliseconds for all the connections to bee inactive but the active count is still Shutting down anyway
[INFO] : : [ logicalcobwebs proxool PrototyperController] Stopping Prototyper thread
[INFO] : : [ logicalcobwebs proxool HouseKeeperController] Stopping HouseKeeper thread
Process finished with exit code
Proxool提供的配置方式很多 这里进选择最常用的xml方式 另外的方式也很简单 可以参看官方文档
三 Proxool很扯蛋的问题 找不到配置文件
proxool的配置文件加载做的比较差劲 通过两个类来加载配置文件
logicanfiguration PropertyConfigurator
logicanfiguration ServletConfigurator
logicanfiguration XMLConfigurator
logicanfiguration JAXPConfigurator
logicanfiguration AvalonConfigurator
这几个类加载配置文件时候 常常会提示找不到配置文件 其原因是proxool在读取CLASSPATH下路径有问题 经常看到一种情况就是 在开发环境IDE环境下面测试通过 在打包后脱离IDE环境独立运行时候就提示找不到配置文件 这里有一个简单的解决方法就是不要使用文件名指定配置文件 而是通过读取CLASSPATH下的配置文件流 形成字节流传递给配置工具类来实现 比如
public static void init()
//初始化数据库连接配置参数
InputStream in = MyDB class getResourceAsStream( /proxool xml );
Reader reader = null;
try
reader = new InputStreamReader(in GBK );
catch (UnsupportedEncodingException e)
e printStackTrace();
try
nfigure(reader false);
catch (ProxoolException e)
e printStackTrace();
cha138/Article/program/Java/hx/201311/25682
相关参考
Proxool连接池相关介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Proxool连接池
SpringIOC配置与应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
监控Proxool连接池的活动连接变化情况 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 研究了
Spring数据源配置与应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Spring数据源配
一、材料与方法1.试验设施底充式增氧设备包括罗茨鼓风机、动力设备、镀锌钢管、微孔管、PVC管、阀门、定时开关等,配有水质检测仪器。主管道采用镀锌钢管或PVC管,直径75毫米。充气管道为微孔管或PVC管
一、材料与方法1.试验设施底充式增氧设备包括罗茨鼓风机、动力设备、镀锌钢管、微孔管、PVC管、阀门、定时开关等,配有水质检测仪器。主管道采用镀锌钢管或PVC管,直径75毫米。充气管道为微孔管或PVC管
PHP应用程序配置模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文举例说明了创建可配置P
Struts配置讲解Web应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Web应用的发布描
配置Struts2应用程序的安全功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
一直以来使用jetty作为我的web开发配置服务器开始的时候和所有的初学者一样使用tomcat作为开发服务器可用着用着感觉tomcat越来越繁琐以及庞大后来用了jb