proxool连接池配置说明(与jdbc、Hibernate、Spring之间的配置)

本文介绍了proxool连接池工具包的使用方法,包括配置文件设置、JDBC连接、Hibernate及Spring中的集成,并提供了性能对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

proxool 简单使用

首先从 http:// proxool.sourceforge.net/下载
proxool-0.9.0RC2.zip

解压后,把proxool-0.9.0RC2.jar放到工程的lib文件夹里面。
proxool是一个非常强大的连接池工具包,我觉得相比dbcp、c3p0这两个连接池包都要好用,我用loadrunner测试过,这三个连接池的从性能上排名如下:proxool>c3p0>dbcp,特别是dbcp在大并发的情况下总是出现各种异常。详细关于dbcp的介绍请参考dbcp用户指南,dbcp实现参考tvjody.javaeye.com/admin/show/117225

Ps:proxool-0.9.0RC2.zip下载包放在了:http://download.youkuaiyun.com/detail/yaowanpengliferay/5190005

下面是实现proxool的几种方式:

JDBC连接方法:

首先建一个proxool的配置文件proxool.xml

proxool.xml 代码xml 代码
  1. xmlversion="1.0"encoding="UTF-8"?>
  2. <something-else-entirely>
  3. <proxool>
  4. <alias>DBPoolalias>
  5. <driver-url>jdbc:oracle:thin:@192.168.0.40:1521:drcomdriver-url>
  6. <driver-class>oracle.jdbc.driver.OracleDriverdriver-class>
  7. <driver-properties>
  8. <propertyname="user"value="drcom"/>
  9. <propertyname="password"value="drcom"/>
  10. driver-properties>
  11. <house-keeping-sleep-time>90000house-keeping-sleep-time>
  12. <maximum-new-connections>150maximum-new-connections>
  13. <prototype-count>3prototype-count>
  14. <maximum-connection-count>100maximum-connection-count>
  15. <minimum-connection-count>3minimum-connection-count>
  16. proxool>
  17. something-else-entirely>

再在web.xml中进行配置,其中的ServletConfigurator是装载WEB-INF目录下的proxool.xml,并设置为Tomcat启动时就加载。Admin这个Servlet是proxool提供的察看连接池的信息的工具,


web.xml 代码

xml 代码
  1. xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appversion="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  5. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  6. <servlet>
  7. <servlet-name>ServletConfiguratorservlet-name>
  8. <servlet-class>
  9. org.logicalcobwebs.proxool.configuration.ServletConfigurator
  10. servlet-class>
  11. <init-param>
  12. <param-name>xmlFileparam-name>
  13. <param-value>WEB-INF/proxool.xmlparam-value>
  14. init-param>
  15. <load-on-startup>1load-on-startup>
  16. servlet>
  17. <servlet>
  18. <servlet-name>Adminservlet-name>
  19. <servlet-class>
  20. org.logicalcobwebs.proxool.admin.servlet.AdminServlet
  21. servlet-class>
  22. servlet>
  23. <servlet-mapping>
  24. <servlet-name>Adminservlet-name>
  25. <url-pattern>/adminurl-pattern>
  26. servlet-mapping>
  27. <servlet>
  28. <servlet-name>TestServletservlet-name>
  29. <servlet-class>
  30. selfservice.TestServlet
  31. servlet-class>
  32. servlet>
  33. <servlet-mapping>
  34. <servlet-name>TestServletservlet-name>
  35. <url-pattern>/TestServleturl-pattern>
  36. servlet-mapping>
  37. web-app>


以上配置完成后,第三步就可以创建一个连接池的类了

java 代码
  1. packageselfservice;
  2. importjava.sql.Connection;
  3. importjava.sql.DriverManager;
  4. importjava.sql.ResultSet;
  5. importjava.sql.SQLException;
  6. importjava.sql.Statement;
  7. importorg.logicalcobwebs.proxool.ProxoolException;
  8. importorg.logicalcobwebs.proxool.ProxoolFacade;
  9. importorg.logicalcobwebs.proxool.admin.SnapshotIF;
  10. publicclassPoolManager {
  11. privatestaticintactiveCount =0;
  12. publicPoolManager(){
  13. }
  14. /**
  15. * 获取连接
  16. * getConnection
  17. * @param name
  18. * @return
  19. */
  20. publicConnection getConnection() {
  21. try{
  22. Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");//proxool驱动类
  23. Connection conn = DriverManager.getConnection("proxool.DBPool");
  24. //此处的DBPool是在proxool.xml中配置的连接池别名
  25. showSnapshotInfo();
  26. returnconn;
  27. }catch(Exception ex){
  28. ex.printStackTrace();
  29. }
  30. returnnull;
  31. }
  32. /**
  33. * 此方法可以得到连接池的信息
  34. * showSnapshotInfo
  35. */
  36. privatevoidshowSnapshotInfo(){
  37. try{
  38. SnapshotIF snapshot = ProxoolFacade.getSnapshot("DBPool",true);
  39. intcurActiveCount=snapshot.getActiveConnectionCount();//获得活动连接数
  40. intavailableCount=snapshot.getAvailableConnectionCount();//获得可得到的连接数
  41. intmaxCount=snapshot.getMaximumConnectionCount() ;//获得总连接数
  42. if(curActiveCount!=activeCount)//当活动连接数变化时输出的信息
  43. {
  44. System.out.println("活动连接数:"+curActiveCount+"(active) 可得到的连接数:"+availableCount+"(available) 总连接数:"+maxCount+"(max)");
  45. activeCount=curActiveCount;
  46. }
  47. }catch(ProxoolException e){
  48. e.printStackTrace();
  49. }
  50. }
  51. /**
  52. * 获取连接
  53. * getConnection
  54. * @param name
  55. * @return
  56. */
  57. publicConnection getConnection(String name){
  58. returngetConnection();
  59. }
  60. /**
  61. * 释放连接
  62. * freeConnection
  63. * @param conn
  64. */
  65. publicvoidfreeConnection(Connection conn){
  66. if(conn!=null){
  67. try{
  68. conn.close();
  69. }catch(SQLException e) {
  70. e.printStackTrace();
  71. }
  72. }
  73. }
  74. /**
  75. * 释放连接
  76. * freeConnection
  77. * @param name
  78. * @param con
  79. */
  80. publicvoidfreeConnection (String name,Connection con){
  81. freeConnection(con);
  82. }
  83. publicvoidgetQuery() {
  84. try{
  85. Connection conn = getConnection();
  86. if(conn !=null){
  87. Statement statement = conn.createStatement();
  88. ResultSet rs = statement.executeQuery("select * from tblgxinterface");
  89. intc = rs.getMetaData().getColumnCount();
  90. while(rs.next()){
  91. System.out.println();
  92. for(inti=1;i<=c;i++){
  93. System.out.print(rs.getObject(i));
  94. }
  95. }
  96. rs.close();
  97. }
  98. freeConnection(conn);
  99. }catch(SQLException e) {
  100. e.printStackTrace();
  101. }
  102. }
  103. }


就这样我们完成了一个连接池的功能。proxool的连接池我用loadrunner进行大并发的测试,性能还是很好的。

Hibernate中proxool连接池的方式:

首先步骤跟JDBC的连接池一样,也是新建一个proxool.xml配置文件,再在web.xml中配置,具体参考上面。
第二步在hibernate的配置文件hibernate.cfg.xml中配置proxool连接设置:

hibernate.cfg.xml代码xml 代码
  1. <propertyname="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProviderproperty>
  2. <propertyname="hibernate.proxool.pool_alias">DBPoolproperty>
  3. <propertyname="hibernate.proxool.xml">proxoolconf.xmlproperty>


Spring中proxool连接池的方式:

首先布骤与JDBC的连接池一样,先建一个proxool.xml配置文件,再在web.xml中配置,具体参考上面的。
第二步在spring配置文件applicationContext.xml中配置proxool连接设置

applicationContext.xml代码 xml 代码
  1. <beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"singleton="true">
  2. <propertyname="driverClassName"value="org.logicalcobwebs.proxool.ProxoolDriver"/>
  3. <propertyname="url"value="proxool.StatDBPool"/>
  4. bean>
  5. <beanid="transactionManager"
  6. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  7. <propertyname="dataSource">
  8. <reflocal="dataSource"/>
  9. property>
  10. bean>

这样spring就能得到一个dataSource的数据源。


proxool还有很多功能,我这只是简单的应用。具体请察看proxool用户指南。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值