免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1621 | 回复: 0
打印 上一主题 下一主题

第21期-Connection Pooling Proxool [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-17 22:56 |只看该作者 |正序浏览
第21期-Connection Pooling Proxool
code { font-size:12px; font-family:verdana; color:509050;letter-spacing:0px;line-height:16px;}
input { font-size:12px; font-family:verdana; color: 000000; background-color: FFFFFF}
.copyright { font-size:10px; font-family:verdana; color:303030;letter-spacing:0px;line-height:16px;}
.list { font-size:10px; font-family:verdana; color:202020; }
作者:
jini
         来源:
java 公开原始码报
申明:未经作者同意,谢绝转载



Proxool
( ASF )
JCP ( Java Community Process )
是负责 Java Spec 标准的制定, Reference Implementations( RI: 实现参考 ), Technology Compatibility kits ( 技术兼容性测试 )的公开组织, 所有和 Java 有关的公司, SUN, IBM, BEA, Oracle, SAP, HP 等等, 要制定相关的标准都会来这里提案, 那么经过公开讨论, 投票, 得到的结果, 就是相互努力下创造出的结晶.
为何标准非常重要, 因为没有标准的东西, 兼容性的部分非常薄弱, 各家厂商彼此实现出来的产品, 将会造成系统整合沉重的负担, 因此, 我以沉重的心情建议大家, 如果你发现你做的东西, 和标准不符合, 或者有相同类似功能的标准, 更是应该减少重新造轮的时间, 还有, 昙花一现的作品, 更是让未来的维护人员最难过的地方.
凡事都有例外, 有些比标准还要早出来, 或者领先标准的东西, 都是可以去学习的, 例如 log4j 远比 jdk logging 好用, hibernate 可以与 ejb 抗衡, 这种例子非常地多, 但是都有同一个特点, 就是 opensource, 就是因为 opensource , 才能吸引更多优秀的人来加强, 来创造 !
回到这周主题, connection pooling 的实现, 很多人都搞不清楚 connection pooling 该如何真正实现, 目前比较有名的 db connection pool 的项目有
jakarta commons-dbcp
,
PoolMan
,
RP Database Connection Pool
等等, 以及这次要介绍的 proxool, 被用在许多项目中, 最有名的就是强大 OR-Mapping 的项目
Hibernate
及 JMS 的专案
OpenJMS
所采用 ~.
增加 license 说明, 相关细节请参考
license 解说 [by Tempo]
ps:如果要赞助本电子报发行, 请与我们联络->
Johnny

本周主题 -- proxool
SECTION 01 为何需要 connection pooling
当我们进入了 Java 的开发世界, pool 也是一门学问, 如何让 connection 先建立好与 DB 的连结, 后来的人可以使用已经存在于 pool 的 connection, 减少连结的时间, 这么优秀的功能, 在许多 application server 都已经实现好了, 你只要简单地按照说明文件配置, 包括最大连结数量, 初始连结数量, 最大等待数量等等的参数, 当然, Tomcat 也有内建 commons-dbcp 相关的 connection pooling 机制, 请查阅
Tomcat JNDI Datasource 设定
!!
而 proxool 是一个强大的 connection pooling 项目, 兼容于 jdk 1.3 以及 1.4. 也已经实现了 监控, 纪录等等的功能, 对于一个有限制 connection 数量, 及注重 performation 的项目来说, 是一套非常完整的解决方案.
下载区, 目前版本 0.7.2
http://sourceforge.net/projects/proxool/

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
SECTION 04 检视 pooling 现在状态
执行 http://localhost:8080/proxool-test/admin ( proxool-test 是你的应用名称 ) 如果没有任何 pool 状态的时候, 你只会看到 Pools 这几个字, 所以你先执行 http://localhost:8080/proxool-test/test.jsp 建立一个 connection, 就可以监控 connection pooling 的状态了.
Pools
>
test
-> 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
1
21:12:31
21:12:31
22432  
Thread-15
less information
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 来使用了
SECTION 06 使用 connection.close() 关闭 connection
以上的范例我都没有写 close, 希望大家在 connection 做完之后记得使用 close() 来关闭, 将 connection 还到 pool , 以免有 java.sql.SQLException: org.logicalcobwebs.proxool.ProxoolException: ConnectionCount is 10. Maximum connection count of 10 cannot be exceeded. 的现象发生.
参考 -- 相关书目或相关文章
  • Proxool :
    http://proxool.sourceforge.net/

  • Proxool API:
    http://proxool.sourceforge.net/api-dev/index.html

    新闻 -- OpenSource News



    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/15511/showart_101238.html
  •   

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP