Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1966801
  • 博文数量: 606
  • 博客积分: 9991
  • 博客等级: 中将
  • 技术积分: 5725
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-17 19:07
文章分类

全部博文(606)

文章存档

2011年(10)

2010年(67)

2009年(155)

2008年(386)

分类:

2008-07-25 18:18:19

SECTION 01 为何需要 connection pooling 

当我们进入了 Java 的开发世界, pool 也是一门学问, 如何让 connection 先建立好与 DB 的连结, 后来的人可以使用已经存在于 pool 的 connection, 减少连结的时间, 这么优秀的功能, 在许多 application server 都已经实现好了, 你只要简单地按照说明文件配置, 包括最大连结数量, 初始连结数量, 最大等待数量等等的参数, 当然, Tomcat 也有内建 commons-dbcp 相关的 connection pooling 机制, 请查阅 
!! 


而 proxool 是一个强大的 connection pooling 项目, 兼容于 jdk 1.3 以及 1.4. 也已经实现了 监控, 纪录等等的功能, 对于一个有限制 connection 数量, 及注重 performation 的项目来说, 是一套非常完整的解决方案. 

下载区, 目前版本 0.7.2

 


SECTION 02 设置 AdminServlet 

首先, 你要把下载 proxool 的 lib 下面所有的 jar 文件, 放到 WEB-INF/lib 下面, 

另外, 把你的 jdbc driver 也放到相同的 lib, 

接著就是配置 /WEB-INF/web.xml 

web.xml




proxool

  Admin
  org.logicalcobwebs.proxool.admin.servlet.AdminServlet



  Admin
  /admin
 





SECTION 03 通过 ProxoolDriver 取得 connection 

建立一个 jsp or DAO Bean, 通过 org.logicalcobwebs.proxool.ProxoolDriver 建立 Connection



test.jsp

<%@page import="java.sql.*"%>
<%
Connection connection = null;
try {
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");

connection = DriverManager.getConnection(
"proxool.test:org.gjt.mm.mysql.Driver:jdbc:mysql://localhost:3306/test",
"root",
"password"
);
} catch (Exception e) {
 out.println(e)
}
out.println("OK");
%>



SECTION 04 检视 pooling 现在状态 

执行 ( proxool-test 是你的应用名称 ) 如果没有任何 pool 状态的时候, 你只会看到 Pools 这几个字, 所以你先执行 建立一个 connection, 就可以监控 connection pooling 的状态了. 

Pools 
>  -> jdbc:mysql://www:3306/test

Defintition for test 
URL jdbc:mysql://localhost:3306/test
Driver org.gjt.mm.mysql.Driver
Connections 0 (min), 15 (max)
Prototyping off
Connection Lifetime 11:00:00
Maximum active time 07:05:00
House keeping sleep time 30s
House keeping test SQL off
Fatal SQL exceptions off
Statistics off

Snapshot at 21:12:53 
Start date 01-??-2003 21:12:30
Connections 1 (active), 0 (available), 15 (max)
   
Served 1
Refused 0
Details
# born last
start
lap
(ms)
 thread
 21:12:31  21:12:31 22432    Thread-15

Proxool 0.7.2 (29-Apr-2003 00:33)



SECTION 05 使用 properties 或者 xml 来设置 DB URL 及 Driver 

可以采用 xml 配置文件, 在程序中使用 JAXPConfigurator.configure("proxool.xml", false); 配置文件设置如下 

WEB-INF/proxool.xml



  
    xml-test
    jdbc:mysql://localhost:3306/test
    org.gjt.mm.mysql.Driver
    
      
      
    
    10
    select CURRENT_DATE
  







也可以采用 properties, 在程序 PropertyConfigurator.configure("proxool.properties"); 文件设置 

WEB-INF/proxool.properties
jdbc-0.proxool.alias=property-test
jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/test
jdbc-0.proxool.driver-class=org.gjt.mm.mysql.Driver
jdbc-0.user=root
jdbc-0.password=password
jdbc-0.proxool.maximum-connection-count=10
jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE






如果在 Web 使用, 在 web.xml 也可以设置 ServletConfigurator Servlet 来注册 




 proxool

 
   ServletConfigurator
   
   org.logicalcobwebs.proxool.configuration.ServletConfigurator
   
  
   
  xmlFile
  WEB-INF/proxool.xml
   

    1

  

 
   Admin
   
   org.logicalcobwebs.proxool.admin.servlet.AdminServlet
   
 

 
   Admin
   /admin
  



在程序中, 只需要利用到别名就可以呼叫 connection pool 里面的 connection 来使用了 

<%@page import="java.sql.*;"%>
<%
Connection connection = null;
try {
 Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
 connection = DriverManager.getConnection("proxool.xml-test");

} catch (Exception e) {
 out.println(e);
}

out.println("ok");
%>
阅读(1270) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~