hibernater配置proxool

合集下载

proxool配置与使用

proxool配置与使用

proxool配置与使用其实网上的资料很全~不过写一下自己的,以便后面有得参考~环境:debian5,postgreSQL8,Tomcat6,proxool0.9.1(一开始用的是0.8.x)关于包:现在下的是0.9.1,解压后有两个,一个是proxool-0.9.1.jar和proxool-cglib.jar,还需要自己找一个commons-logging.jar。

凑齐这3个,放到自己jsp项目的WEB-INF/lib里面。

(如果用的是Tomcai6的话,建议用proxool的0.9.1版本,否则会有问题。

到后面再说)----------------------------------------------------------1----------------------------------------------------------------------------- proxool的配置的基本要素主要有几个:alias数据源别名,自己指定一个,在后面proxool实例化时需要用到driver-url数据库驱动的URL,一般是jdbc:xx://xx.xx.xx.xx:port/数据库名,这个都是有DB和机子环境决定的driver-class数据库驱动name和password这几个属性是保证连上的根本,其他可以用默认,或者在连接成功后在修改(在下面的例子中会看到这些属性,更多的属性了解可以baidu一下)。

-------------------------------------------------------2-----------------------------------------------------------------------------------------配置的方法有四种:1直接在JSP里配置:适合测试的,没多大实际意义test.jsp(红色部分按自己实际情况改)<% @page import = "java.sql.*" %><%Connection connection = null ;try {Class.forName( "org.logicalcobwebs.proxool.ProxoolDriver" );connection = DriverManager.getConnection("proxool.alias:org.postgresql.Driver:jdbc:postgresql://localh ost/portal" ,"postgres" ,"password");} catch (Exception e) {out.println(e)}out.println( "OK" );%>2用web.xml:感觉很奇怪,要添加一大堆属性,为了简化web.xml,不推荐3用proxool.xml和web.xml(建议用这个,也是网上最多资料的,这里就参考一下/blog/359570的,他写得很好!~)I.首先是proxool.xml,新建一个放在WEB-INF里面,代码如下:<?xml version="1.0" encoding="UTF-8"?><!-- the proxool configuration can be embedded within your own application's. Anything outside the "proxool" tag is ig nored. --> <something-else-entirely><proxool><alias>test</alias> <!--数据源的别名--><driver-url>jdbc:postgresql://localhost/portal</driver-url><!--url连接串--><driver-class>org.postgresql.Driver</driver-class> <!--驱动类--><driver-properties><property name="user" value="postgres" /> <!--用户名--> <property name="password" value="password" /><!--密码--></driver-properties><!--最大连接数(默认5个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 --><maximum-connection-count>100</maximum-connection-count><!--最小连接数(默认2个)--><minimum-connection-count>10</minimum-connection-count><!--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁默认30秒--><house-keeping-sleep-time>90000</house-keeping-sleep-time><!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--><maximum-new-connections>10</maximum-new-connections><!--最少保持的空闲连接数(默认2个)--><prototype-count>5</prototype-count><!--在使用之前测试--><test-before-use>true</test-before-use><!--用于保持连接的测试语句 --><house-keeping-test-sql>select sysdate from dual</house-keeping-test-sql></proxool></something-else-entirely>II.然后是web.xml,加入以下内容<servlet><servlet-name>ServletConfigurator</servlet-name><servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigur ator</servlet-class><init-param><!--ServletConfigurator:加载并初始化proxool.xml文件,因为它是连接数据库的.其他很多模块都用到数据,所以必须首先加载它--> <param-name>xmlFile</param-name><param-value>WEB-INF/proxool.xml</param-value></init-param><load-on-startup>1</load-on-startup><!--load-on-startup:数值越小,就会先被加载初始化--></servlet><servlet><!--Admin:监控数据库连接池的连接情况--><servlet-name>Admin</servlet-name><servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</ servlet-class></servlet><servlet-mapping><servlet-name>Admin</servlet-name><url-pattern>/admin</url-pattern><!--到时候直接访问项目路径/admin,就能查看属性设置请款和快照snapshot。

Hibernate Proxool连接池配置总结及常遇问题

Hibernate Proxool连接池配置总结及常遇问题

使用的proxool版本:proxool-0.9.0RC3.jar配置目录:Hibernate.hbm.xml文件配置<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3 .0.dtd"><hibernate-configuration><session-factory name="default"><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="show_sql">true</property><property name="show_format">true</property><property name="myeclipse.connection.profile">shsmis</property> <!-- proxool connection pools--><property name="hibernate.proxool.pool_alias">pool</property><property name="hibernate.proxool.xml">ProxoolConf.xml</property> <property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property><mapping resource="org/shsmis/hibernate/vo/Manager.hbm.xml" /></session-factory></hibernate-configuration>ProxoolConf.xml文件配置<?xml version="1.0" encoding="UTF-8"?><proxool><alias>pool</alias><driver-url>jdbc:mysql://localhost:3306/shsmis</driver-url><driver-class>com.mysql.jdbc.Driver</driver-class><driver-properties><property name="user" value="root"></property><property name="password" value="root"></property></driver-properties><house-keeping-sleep-time>90000</house-keeping-sleep-time><maximum-new-connections>20</maximum-new-connections><prototype-count>5</prototype-count><maximum-connection-count>100</maximum-connection-count><minimum-connection-count>10</minimum-connection-count></proxool>web.xml文件配置<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><display-name>Struts2 Hibernate Test</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><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>/Admin/proxool</url-pattern></servlet-mapping></web-app> 监控连接池访问http://localhost:8080/S2Htest/Admin/proxool注意问题:1.目录结构,本人经过将近一天的测试,Hibernte.hbm.xml文件可以放在任何位置,但Proxool.xml文件必须放在src目录下,也就是项目的classes目录下.我一开始将Proxool.xml放在和Hibernate同一目录下,也曾这样配置过:<propertyname="hibernate.proxool.xml">/org/shsmis/hibernate/cfg/Proxool.xml</p roperty>:<propertyname="hibernate.proxool.xml">org/shsmis/hibernate/cfg/Proxool.xml</pr operty>:<propertyname="hibernate.proxool.xml>org.shsmis.hibernate.cfg.Proxool</propert y>都会发生错误 :Unable to locate config file:2.对于web.xml的配置有这样的配置:<servlet><servlet-name>ServletConfigurator</servlet-name><servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class><init-param><param-name>xmlFile</param-name><param-value>WEB-INF/classes/ProxoolConf.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet> 让连接池应用程序一开始就运行加上这些配置时,服务器刚启动时没有错误,但运行一个简单的程序出错 :Proxool Provider unable to load JAXP configurator file: ProxoolConf.xml;Attempt to register duplicate pool called 'pool' 通过网上搜索"第二个的错误"原因是在应用中重复调用Hibernate的sessionFactory.个人猜测是与Hibernate.hbm.xml 中配置同时调用了sessionfactory.于是我就把这些配置去掉.问题解决.但这不是问题解决的办法,怎样配置才能让连接池一开始就运行呢?不好意思,我也不会啊!3.对于Proxool的编码问题,不要改变ProxoolConf.xml的编辑工具.如果改变就很有可能改变文件的编码格式,会出错Proxool Provider unable to load JAXP configurator file: ProxoolConf.xml.如果出现这样的错误很大可能是这个原因,此时应该删除该文件,新建一次.尽量不要直接复制原来文件中的代码.以上这些就是我在使用Proxool连接池遇到的问题,与网上的大体一样.如果有高手知道这些错误的根本原因,例如:Hibernate加载proxool.xml文件的过程和Proxool的编码问题,希望发到我的邮箱itanyang120@小弟将不尽感激.。

proxool连接池配置详细说明

proxool连接池配置详细说明

proxool连接池配置详细说明收藏目前市面上三个主流连接池从性能上排名如下:proxool>c3p0>dbcp,proxool还提供了可视化的连接池实时监控工具,所以既稳定又方便,配置也是非常容易的事情。

下面我来讲讲我如何配置proxool连接池的。

1、下载相关资源。

从/站点上下载我们需要的资源,proxool-0.9.1是最新版本,解压后从lib下copy里面的2个JAR包proxool-0.9.1.jar和proxool-cglib.jar至项目中去。

如果不加proxool-cglib.jar的话会报 ng.ClassNotFound Exception:org.logicalcobwebs.cglib.proxy.Callback异常。

2、首先在WEB-INF目录下新建一个proxool.xml文件。

view plaincopy to clipboardprint?1.<?xml version="1.0" encoding="UTF-8"?>2.<proxool-config>3.<proxool>4.<alias>datasource1</alias>5.<driver-url>jdbc:mysql://localhost:3306/datasource1</driver-url>6.<driver-class>com.mysql.jdbc.Driver</driver-class>7.<driver-properties>8.<property name="user"value="root"/>9.<property name="password"value="root"/>10.</driver-properties>11.<house-keeping-sleep-time>90000</house-keeping-sleep-time>12.<maximum-new-connections>20</maximum-new-connections>13.<prototype-count>5</prototype-count>14.<maximum-connection-count>1000</maximum-connection-count>15.<minimum-connection-count>10</minimum-connection-count>16.</proxool>17.18.<proxool>19.<alias>datasource2</alias>20.<driver-url>jdbc:sybase:Tds:localhost:16428/datasource2</driver-url>21.<driver-class>com.sybase.jdbc3.jdbc.SybDriver</driver-class>22.<driver-properties>23.<property name="user"value="dba"/>24.<property name="password"value="dba"/>25.</driver-properties>26.<house-keeping-sleep-time>90000</house-keeping-sleep-time>27.<maximum-new-connections>20</maximum-new-connections>28.<prototype-count>5</prototype-count>29.<maximum-connection-count>1000</maximum-connection-count>30.<minimum-connection-count>10</minimum-connection-count>31.</proxool>32.</proxool-config>我在里面配置了2个不同数据库的数据源,你可以根据需要配置多个,其中具体的参数属性我会在下面全部予以说明。

Hibernate基本使用及配置

Hibernate基本使用及配置

Hibernate基本使⽤及配置Hibernate基本使⽤及配置Hibernate是什么框架Hibernate是⼀个开放源代码的对象关系映射框架1.它对JDBC进⾏了⾮常轻量级的对象封装2.它将POJO与数据库表建⽴映射关系,是⼀个全⾃动的orm框架3.Hibernate可以⾃动⽣成SQL语句,⾃动执⾏,使得Java程序员可以随⼼所欲的使⽤对象编程思维来操纵数据库。

4.Hibernate可以应⽤在任何使⽤JDBC的场合,既可以在Java的客户端程序使⽤,也可以在Servlet/JSP的Web应⽤中使⽤5.它是持久层的ORM框架POJO是什么简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称EJB是什么是Sun的JavaEE服务器端组件模型,设计⽬标与核⼼应⽤是部署分布式应⽤程序。

简单来说就是把已经编写好的程序(即:类)打包放在服务器上执⾏。

ORM是什么Object Relational Mapping(对象关系映射),指的是将⼀个Java中的对象与关系型数据库中的表建⽴⼀种映射关系,从⽽操作对象就可以操作数据库中的表。

使⽤Hibernate有什么好处1.对JDBC访问数据库的代码进⾏了轻量级封装,简化了数据访问层繁琐重复性的代码,减少了内存消耗,加快了运⾏效率2.是⼀个基本JDBC的主流持久化框架,很⼤程度上简化了DAO层的编码⼯作3.性能⾮常好,映射灵活性⽐较好,⽀持多关系数据库,⼀对⼀,⼀对多,多对多的各种复杂关系4.可扩展性强,源代码及API开放,当本⾝功能不够⽤时,可以⾃⾏编码进⾏扩展框架下载地址/doc/81822fa9366baf1ffc4ffe4733687e21af45ffb1.html /orm/Hibernate⽬录解析documentation Hibernate开发的⽂档project Hibernate提供的参考项⽬lib Hibernate开发的⽂档required Hibernate开发的必须的依赖包optional Hibernate开发的可选的jar包Hibernate使⽤1.创建⼀个项⽬(普通Java项⽬、Web项⽬都可以)2.引⼊必须的jar包①数据库的驱动包②Hibernate开发必须的Jar包3.建表5.创建Hibernate的核⼼配置⽂件,通常都叫hibernate.cfg.xml①创建完毕后,也有⼀个约束要引⼊,在org.hibernate包当中可以找到对应的dtd configuration.dtd数据库相关配置(如果属性名记不住):在⽬录提供的project当中有⼀个etc,在etc当中有⼀个hibernate.properties 的⽂件打开。

hibernate配置数据库连接池的三种方法

hibernate配置数据库连接池的三种方法

➢数据库连接池的概念(是什么,做什么用的,有什么好处)➢首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了。

➢以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放。

如果频繁的数据库操作,就会导致性能很低。

连接池的出现,为开发过程提供了一个很好的管理平台。

当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。

同样,使用完毕后,只需放回内存即可。

而连接的建立、断开都有连接池自身来管理。

同时,我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等。

通过使用连接池,将大大提高程序效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

➢而Hibernate的出现把连接池的使用引入了一个新的利用方式,让你充分享受配置化给开发带来的便利。

1 C3P0 (以验证可用)只需在hibernate.cfg.xml中加入<property name="ername">omdssd_admin</property><property name="connection.password">omdssd_hskj</property><property name="connection.url">jdbc:oracle:thin:@10.142.1.138:1521:omds</property><property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><property name="format_sql">true</property><property name="show_sql">true</property><property name="myeclipse.connection.profile">oracle10g_112</property><property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property><property name="hibernate.c3p0.min_size">5</property> //连接池中数据库连接的最小数目<property name="hibernate.c3p0.max_size">30</property> //连接池中数据库连接的最大数目<property name="hibernate.c3p0.time_out">1800</property> //设定数据库连接的过期时间,以秒为单位<property name="hibernate.c3p0.max_statement">50</property> //可以被缓存的PreparedStatement实例的最大数目。

hibernate配置多种数据库

hibernate配置多种数据库

hibernate配置多种数据库在hibernate中,可以配置很多种数据库,例如MySql、Sql Server和Oracle。

下面介绍几个主要的数据库1. MySql连接配置MySql数据库的hibernate连接设置,在hibernate.cfg.xml文件中<hibernate-configuration><session-factory><!--各属性的配置--><!—为true表示将Hibernate发送给数据库的sql显示出来--><property name="show_sql">true</property><!-- SQL方言,这边设定的是MySQL --><property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property><!--一次读的数据库记录数--><property name="jdbc.fetch_size">50</property><!--设定对数据库进行批量删除--><property name="jdbc.batch_size">30</property><!--驱动程序--><property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- JDBC URL --><property name="connection.url">jdbc:mysql://localhost/dbname?characterEncoding=gb2312</property><!--数据库用户名--><property name="ername">root</property><!--数据库密码--><property name="connection.password">root</property><!—映射文件--><mapping resource="com/amigo/pojo/User.hbm.xml"/><mapping resource="com/amigo/pojo/Org.hbm.xml"/></session-factory></hibernate-configuration>上面使用的驱动类是com.mysql.jdbc.Driver.需要将MySql的连接器jar包(eg. mysql-co nnector-java-Dbname为数据库名字5.0.4 -bin.jar )加入到classpath中。

Proxool-0.9.0RC3连接池的使用

Proxool-0.9.0RC3连接池的使用

Proxool-0.9.0RC3连接池的使用创建proxool.xml,内容如下:1.xml version="1.0" encoding="UTF-8"?>2.<something-else-entirely>3.<proxool>4.<alias>liferayalias>5.<driver-url>jdbc:oracle:thin:@localhost:1521:orcldriver-url>6.<driver-class>oracle.jdbc.driver.OracleDriverdriver-class>7.<driver-properties>8.<property name="user" value="kook"/>9.<property name="password" value="kook"/>10.driver-properties>11.<maximum-connection-count>500maximum-connection-count>12.<minimum-connection-count>5minimum-connection-count>13.proxool>14.something-else-entirely>alias是连接的别名,需要在其他部分引用。

将proxool.xml拷贝到WEB-INF目录下,打开web.xml,新增如下部分1.<servlet>2.<servlet-name>proxoolServletConfiguratorservlet-name>3.<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfiguratorservlet-class>4.<init-param>5.<param-name>xmlFileparam-name>6.<param-value>WEB-INF/proxool.xmlparam-value>7.init-param>8.<load-on-startup>1load-on-startup>9.servlet>10.<servlet>11.<servlet-name>Adminservlet-name>12.<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServletservlet-class>13.servlet>14.<servlet>15.<servlet-mapping>16.<servlet-name>Adminservlet-name>17.<url-pattern>/proxoolurl-pattern>18.servlet-mapping>拷贝proxool-0.9.0RC3.jar和相关的数据库驱动到项目的lib目录中,配置完成Proxool的使用,只需要如下简单的代码即可java 代码2.Connection con = DriverManager.getConnection("proxool:liferay");//参数为proxool.xml中的alias元素的值这样即可获得一个连接。

proxool简单使用

proxool简单使用

proxool简单使用首先从 http://下载proxool-0.9.0RC2.zip解压后,把proxool-0.9.0RC2.jar放到工程的lib文件夹里面。

proxool是一个非常强大的连接池工具包,我觉得相比dbcp、c3p0这两个连接池包都要好用,我用loadrunner测试过,这三个连接池的从性能上排名如下:proxool>c3p0>dbcp,特别是dbcp在大并发的情况下总是出现各种异常。

详细关于dbcp的介绍请参考dbcp 用户指南,dbcp实现参考。

下面是实现proxool的几种方式:JDBC连接方法:首先建一个proxool的配置文件proxool.xmlproxool.xml 代码xml 代码1.xml version="1.0" encoding="UTF-8"?>2.3.4.5.<something-else-entirely>6.<proxool>7.8.<alias>DBPoolalias>9.10.<driver-url>jdbc:oracle:thin:@192.168.0.40:1521:drcomdriver-url>11.12.<driver-class>oracle.jdbc.driver.OracleDriverdriver-class>13.<driver-properties>14.<property name="user" value="drcom"/>15.<property name="password" value="drcom"/>16.driver-properties>17.18.<house-keeping-sleep-time>90000house-keeping-sleep-time>19.20.<maximum-new-connections>150maximum-new-connections>21.22.<prototype-count>3prototype-count>23.24.<maximum-connection-count>100maximum-connection-count>25.26.<minimum-connection-count>3minimum-connection-count>27.proxool>28.something-else-entirely>再在web.xml中进行配置,其中的ServletConfigurator是装载WEB-INF目录下的proxool.xml,并设置为T omcat启动时就加载。

proxool连接池原理

proxool连接池原理

proxool连接池原理
proxool连接池原理
Proxool是一个用来管理连接的代理,它将数据库连接弱化为JDBC API,并对连接池的使用、释放和管理进行了自动化,提供了性能监视,可以对数据库连接进行设置,可以使用预热,以及超时和故障检测等功能,使用者无需关心真正的数据库连接,可以将精力放在应用程序上。

Proxool的核心是一个叫做连接池的抽象容器,这个连接池可以为多个应用程序提供抽象的数据库连接,其中的每一个连接都由一个连接池来管理,每个应用程序可以从连接池取出一个永久性的连接,然后该连接可以被它们共享,并且应用程序可以在一个连接处理完一个任务之后再将该连接返回给连接池,而连接池中其他的应用程序也可以获得该连接。

Proxool的另一个重要功能是监视。

Proxool可以定期检查连接中的数据库活动,并将该活动的概要信息记录在日志中,以便对应用程序的性能进行监控。

除此之外,Proxool还可以记录连接池的使用情况,比如处理任务的速率等。

Proxool还提供了其他功能,比如可以在连接池中的连接数量达到一定水平时启动一个新的线程,或者在没有任何应用程序的情况下关闭连接池,以及在线程的运行中限制连接的数量等。

这些功能都有助于保证连接的健康,提高系统的可用性和性能。

- 1 -。

【个人总结系列-43】连接池Proxool学习总结-概述-配置-使用

【个人总结系列-43】连接池Proxool学习总结-概述-配置-使用

连接池Proxool学习总结-概述-配置-使用2.2 连接池Proxool学习总结2.2.1 连接池概述在需要频繁连接数据库的应用场景,连接的建立和销毁都是一个十分消耗资源的过程,因此这时可以通过使用连接池技术来提高效率。

连接池技术的核心思想是连接复用,通过建立一个数据库连接池以及一套连接使用、分配、管理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。

Proxool是一种Java数据库连接池技术,是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。

Proxool在工程中的使用流程为:1.在工程中导入并引用Proxool所需的jar包,proxool-0.9.1.jar、proxool-cglib.jar和commons-logging-1.1.3.jar2.在工程中添加文件配置Proxool的相关属性3.在工程中加载配置文件和驱动类4.在程序中从连接池里获取数据库连接,使用完成后释放连接(没有真正释放连接,而是放回容器中)2.2.2 Proxool连接池配置在Proxool连接池配置配置时,通常有如下一些常用的配置项,各项的含义解释如下:•alias:连接池的别名•driver-url:是数据库驱动的url,就是连接的url•driver-class:数据库驱动类,不同的数据库驱动类不同•driver-properties:驱动的属性,可以设置登陆数据库的用户名和密码•house-keeping-sleep-time:保留线程处于睡眠状态的最长时间(house keeper 的职责是检查各个连接的状态,并判断是否需要销毁或者创建)•maximum-active-time:如果house keeper检测到某个线程的活动时间大于这个数值,它将会杀掉这个线程,默认是5分钟•maximum-connection-count:最大的数据库连接数•minimum-connection-count:最小的数据库连接数•maximum-connection-lifetime:一个线程的最大寿命•prototype-count:连接池中可用的连接数量.如果当前的连接池中的连接少于这个数值.新的连接将被建立Proxool可以应用在Java Web环境下,也可以应用在Java Application中,网上大部分的例子讲解的都是运用在Web环境的情形。

proxool连接池的使用方法心得

proxool连接池的使用方法心得

Proxool连接池的使用方法、心得Proxool连接池的使用方法、心得[原创]公司里用的连接池都是自己写好了,封装起来的,做大型项目的时候,非常有用,但近段时间总是发现数据库连接过多,造成数据库连接压力过大,网站无法访问等严重后果,我们做的网站主要是用于移动公司的后台,经常会处理很大"群集任务",找了很长时间,发现是程序里有很多打开的连接没有关闭,放回到连接池里去,造成连接数不够的问题.后来上网上找了这个PROXOOL连接池插件,发现有自动KILL不活动的连接的功能.而且有VIEW方式查看连接情况,而且很多数据都是配置完成。

决定在项目中试验一下。

官方网址:/ 当前版本:proxool-0.9.0RC2 1、下载proxool 地址:2、解压缩proxool-0.9.0RC2.zip,拷贝lib/proxool-0.9.0RC2.jar到web-info/lib 拷贝jdbc驱动到web-info/lib3、在web-info下建立文件:proxool.xml&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;something-else-entirely&gt;&lt;proxool&gt;&lt;alias&gt;Test&lt;/alias&gt;&lt;driver-url&gt;jdbc:oracle:thin:@192.168.10.160:1521:or c1&lt;/driver-url&gt;&lt;driver-class&gt;oracle.jdbc.driver.OracleDriver&lt;/drive r-class&gt;&lt;driver-properties&gt;&lt;property name="user" value="test"/&gt;&lt;property name="password"value="testpass"/&gt;&lt;/driver-properties&gt;&lt;maximum-connection-count&gt;10&lt;/maximum-conne ction-count&gt;&lt;house-keeping-test-sql&gt;selectCURRENT_DATE&lt;/house-keeping-test-sql&gt;&lt;/proxool&gt;&lt;/something-else-entirely&gt;4、在web.xml里新增如下:&lt;servlet&gt;&lt;servlet-name&gt;proxoolServletConfigurator&lt;/servlet-name&gt;&lt;servlet-class&gt;org.logicalcobwebs.proxool.configurati on.ServletConfigurator&lt;/servlet-class&gt;&lt;init-param&gt;&lt;param-name&gt;xmlFile&lt;/param-name&gt;&lt;param-value&gt;WEB-INF/config/proxool.xml&lt;/param -value&gt;&lt;/init-param&gt;&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;&lt;/servlet&gt;&lt;!-- proxool提供的管理监控工具,可查看当前数据库连接情况。

Hibernate 中配置C3P0连接池

Hibernate 中配置C3P0连接池

Hibernate 中配置C3P0连接池Hibernate自带的连接池算法相当不成熟。

它只是为了让你快些上手,并不适合用于产品系统或性能测试中。

出于最佳性能和稳定性考虑你应该使用第三方的连接池。

只需要用特定连接池的设置替换hibernate.connection.pool_size即可。

这将关闭Hibernate自带的连接池。

例如,你可能会想用C3P0.C3P0是一个随Hibernate一同分发的开源的JDBC连接池,它位于lib目录下。

如果你设置了hibernate.c3p0.*相关的属性,Hibernate将使用C3P0ConnectionProvider来缓存JDBC连接。

如果你更原意使用Proxool,请参考发行包中的hibernate.properties并到Hibernate网站获取更多的信息。

这是一个使用C3P0的hibernate.properties样例文件(来自Hibernate包中etc目录下):############################## C3P0 Connection Pool###############################hibernate.c3p0.max_size 2#hibernate.c3p0.min_size 2#hibernate.c3p0.timeout 5000#hibernate.c3p0.max_statem ents 100#hibernate.c3p0.idle_test_period 3000#hibernate.c3p0.acquire_increment 2#hibernate.c3p0.validate false在hibernate.cfg.xml文件里面加入如下的配置:<!-- 最大连接数--><property name="hibernate.c3p0.max_size">20</property><!-- 最小连接数--><property name="hibernate.c3p0.min_size">5</property><!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒--><property name="hibernate.c3p0.timeout">120</property><!-- 最大的PreparedStatement的数量--><property name="hibernate.c3p0.max_statements">100</property><!-- 每隔120秒检查连接池里的空闲连接,单位是秒--><property name="hibernate.c3p0.idle_test_period">120</property><!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数--><property name="hibernate.c3p0.acquire_increment">2</property><!-- 每次都验证连接是否可用--><property name="hibernate.c3p0.validate">true</property>完整示例如下(hibernate.properties):hibernate.connection.driver_class =org.postgresql.Driverhibernate.connection.url= jdbc:postgresql://localhost/mydatabaseername = myuserhibernate.connection.password = secrethibernate.c3p0.min_size=5hibernate.c3p0.max_size=20hibernate.c3p0.timeout=1800hibernate.c3p0.max_statements=50hibernate.dialect =org.hibernate.dialect.PostgreSQLDialect。

proxool开源的数据库连接池用包使用说明

proxool开源的数据库连接池用包使用说明

proxool是一个开源的数据库连接池。

官方网站是:/要使用这个连接池需要倒入两个Jar包,proxool-0.9.1.jar和proxool-cglib.jar。

可以从官网下载最新的包。

以前一直使用tomcat原配的那个连接池,好象叫作dbcp,效率怎么样没有深究,关键是配置比较方便,也不用额外下载jar包。

最近听说Proxool可能、也许、好象比较好一点。

就决定拿来研究一下。

我比较喜欢使用JSTL的SQL标签,因此本文介绍一下JSTL与Proxool结合使用的方法。

共分三个步骤,应用服务器选用tomcat,其它应用服务器应该也是一样的,不过我没有研究过。

一、proxool的配置,网上讲得比较多。

无外乎两种方式,一种使用properties文件,一种使用xml文件。

两处方式其实差不多。

我一般偏爱properties文件,觉得比较简洁。

因此本文就以属性文件为例,可仿照下面的方式来配制。

jdbc-0.proxool.alias=proxool-pooljdbc-0.proxool.driver-url=jdbc:oracle:thin:@127.0.0.1:1521:oradbjdbc-0.proxool.driver-class=oracle.jdbc.driver.OracleDriverer=hrjdbc-0.password=hrjdbc-0.proxool.house-keeping-sleep-time=400000jdbc-0.proxool.house-keeping-test-sql=select sysdate from dualjdbc-0.proxool.maximum-connection-count=10jdbc-0.proxool.minimum-connection-count=5jdbc-0.proxool.maximum-connection-lifetime=18000000jdbc-0.proxool.simultaneous-build-throttle=5jdbc-0.proxool.recently-started-threshold=40000jdbc-0.proxool.overload-without-refusal-lifetime=50000jdbc-0.proxool.maximum-active-time=60000jdbc-0.proxool.verbose=truejdbc-0.proxool.trace=truejdbc-0.proxool.fatal-sql-exception=Fatalerrorjdbc-0.proxool.prototype-count=2将文件保存为proxool.properties,目录:WEB-INF/classes,这个文件名下文会用的。

Java数据库连接池之proxool

Java数据库连接池之proxool

28. </proxool-config> web.xml 文件中的代码: 1. 2. <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="/xml/ns/javaee" 4/6
Java 数据库连接池之 proxool
Proxool 是一种 Java 数据库连接池技术。sourceforge 下的一个开源项目,这个项目提供一个健壮、易用的连接池,最 为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。 目前是和 DBCP 以及 C3P0 一起,最为常见的三种 JDBC 连接池技术。 日前,Hibernate 官方宣布由于 Bug 太多不再支持 DBCP,而推荐使用 Proxool 或 C3P0。 下面通过一个 Demo 说明一下如何使用: 项目结构如下:
resultSet = preparedStatement.executeQuery(); ResultSetMetaData rsmd = resultSet.getMetaData(); int columnCount = rsmd.getColumnCount(); while(resultSet.next()){ Map<String, Object> map = new HashMap<String, Object>(); for(int i =1; i<=columnCount;i++){ String columnName = rsmd.getColumnName(i); Object obj = null; if(rsmd.getColumnTypeName(i).equals("DATE")){ obj = resultSet.getString(columnName); }else{ obj = resultSet.getObject(columnName); } map.put(columnName, obj); } list.add(map); } }catch(SQLException e){ e.printStackTrace(); }finally{ close(); return list;

proxool使用说明

proxool使用说明

Proxool使用说明1.配置有如下几种配置方式:1.1当建立连接的时候传递一个java.util.Properties对象给数据库驱动。

Properties info = new Properties();info.setProperty("proxool.maximum-connection-count", "20");info.setProperty("proxool.house-keeping-test-sql", "select CURRENT_DA TE");info.setProperty("user", "sa");info.setProperty("password", "");String alias = "test";String driverClass = "org.hsqldb.jdbcDriver";String driverUrl = "jdbc:hsqldb:test";String url = "proxool." + alias + ":" + driverClass + ":" + driverUrl;connection = DriverManager.getConnection(url, info);1.2使用xml文件。

例如:<?xml version="1.0" encoding="ISO-8859-1"?><!--the proxool configuration can be embedded within your own application's.Anything outside the "proxool" tag is ignored. --><something-else-entirely><proxool><alias>xml-test</alias><driver-url>jdbc:hsqldb:.</driver-url><driver-class>org.hsqldb.jdbcDriver</driver-class><driver-properties><property name="user" value="sa"/><property name="password" value=""/></driver-properties><maximum-connection-count>10</maximum-connection-count><house-keeping-test-sql>select CURRENT_DA TE</house-keeping-test-sql> </proxool></something-else-entirely>然后在你的启动代码中简单的调用xml configurator(JAXPConfigurator):JAXPConfigurator.configure("src/java-test/org/logicalcobwebs/proxool/configuration/test-no -ns.xml", false);//false意味着没有验证也可以使用一个servlet来装载配置文件:<servlet><servlet-name>ServletConfigurator</servlet-name><servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class><init-param><param-name>xmlFile</param-name><param-value>WEB-INF/proxool.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet>建立连接非常简单("xml-test"是上面我们用的别名)connection = DriverManager.getConnection("proxool.xml-test");注意:需要include一个JAXP xml解析器,比如Crimson或Xerces。

Proxool数据库连接池解析

Proxool数据库连接池解析

Proxool数据库连接池解析Proxool数据库连接池解析一、简介proxool与c3p0及dbcp数据库具有大致相同的性能,但是在处理连接泄漏的等边界问题上,具有很强的处理能力。

它能够很好的管理连接,并且它还有一个监控平台,能够对连接进行一些简单的监控。

context.xml的配置情况:在tomcat6下使用放在META-INF文件夹下。

WEB-INF/web.xml<="" name="jdbc/tdjPool" p="">auth="Container"type="javax.sql.DataSource"factory="org.logicalcobwebs.proxool.ProxoolDataSource"proxool.alias="testDB"user="hyf"password="hyf"delegateProperties="foo=1,bar=true"proxool.jndi-name="mysqljndi"proxool.driver-url="jdbc:oracle:thin:@192.168.1.230:1521:sryx"proxool.driver-class="oracle.jdbc.OracleDriver"proxool.house-keeping-sleep-time="900000"proxool.maximum-active-time="5"proxool.prototype-count="3"proxool.statistics="1m,15m,1d"proxool.simultaneous-build-throttle="10"proxool.minimum-connection-count="5"proxool.maximum-connection-count="15"proxool.house-keeping-test-sql="select CURRENT_DATEfrom dual"proxool.test-before-use="true"/>。

Hibernate的连接池和数据源配置

Hibernate的连接池和数据源配置

Hibernate的三种连接池设置C3P0、Proxool和DBCP一、Hibernate连接池配置:Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP。

在配置连接池时需要注意的有三点:一、Apche的DBCP在Hibernate2中受支持,但在Hibernate3中已经不再推荐使用,官方的解释是这个连接池存在缺陷。

如果你因为某种原因需要在Hibernate3中使用DBCP,建议采用JNDI方式。

二、默认情况下(即没有配置连接池的情况下),Hibernate会采用内建的连接池。

但这个连接池性能不佳,且存在诸多BUG(笔者就曾在Mysql环境下被八小时连接悬空问题困扰过),因此官方也只是建议仅在开发环境下使用。

三、Hibernate2和Hibernate3的命名空间有所变化。

例如,配置C3P0时的provider_cla ss有Hibernate2环境下使用net.sf.hibernate.connection.C3P0ConnectionProvider,在Hibernate3环境下使用org.hibernate.connection.C3P0ConnectionProvider。

下面是Hibernate环境下几种常见的连接池配置:1.Hibernate默认连接池<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configurationPUBLIC "-//Hibernate/Hibernate Configuration DTD//EN""/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory ><!—JDBC驱动程序--><property nam e="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 连接数据库的URL--><property nam e="connection.url">jdbc:m ysql://localhost:3306/schoolproject</property><property nam e="eUnicode">t rue</property><property nam e="connection.characterEncoding">UTF-8</property><!--连接的登录名--><property nam e="ername">root</property><!—登录密码--><property nam e="connection.password"></property><!--是否将运行期生成的SQL输出到日志以供调试--><property nam e="show_sql">t rue</property><!--指定连接的语言--><property nam e="dialect">org.hibernate.dialect.MySQLDialect</property><!--映射Student这个资源--><mapping resource="com/wqbi/model/pojo/student.hbm.xml" /></session-factory></hibernate-configuration>2.C3P0连接配置<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configurationPUBLIC "-//Hibernate/Hibernate Configuration DTD//EN""/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory ><!—JDBC驱动程序--><property nam e="connection.driver_class">com.mysql.jdbc.Driver</property><!-- 连接数据库的URL--><property nam e="connection.url">jdbc:m ysql://localhost:3306/schoolproject</property><property nam e="eUnicode">t rue</property><property nam e="connection.characterEncoding">UTF-8</property><!--连接的登录名--><property nam e="ername">root</property><!--登录密码--><property nam e="connection.password"></property><!-- C3P0连接池设定--><property nam e="hibernate.connection.provider_class">org.hibernate.connectio n.C3P0ConnectionProvider</property><property nam e="hibernate.c3p0.m ax_size">20</property><property nam e="hibernate.c3p0.m in_size">5</property><property nam e="hibernate.c3p0.tim eout">120</property><property nam e="hibernate.c3p0.m ax_statem ents">100</property><property nam e="hibernate.c3p0.idle_test_period">120</property><property nam e="hibernate.c3p0.acquire_increment">2</property><!--是否将运行期生成的SQL输出到日志以供调试--><property nam e="show_sql">t rue</property><!--指定连接的语言--><property nam e="dialect">org.hibernate.dialect.MySQLDialect</property><!--映射Student这个资源--><mapping resource="com/wqbi/model/pojo/student.hbm.xml" /></session-factory></hibernate-configuration>3.proxool连接池(1) 先写proxool的配置文件,文件名:proxool.xml(一般放在与hibernate.cfg.xml文件在同一个目录中)本例配置的是MYSQL数据库,数据库的名字为schoolproject<?xml version="1.0" encoding="UTF-8"?><!-- the proxool configuration can be em bedded within your own application's.Anything outside the "proxool" tag is ignored. --><something-else-entirely><proxool><!--连接池的别名--><alias>DBPool</alias><!--proxool只能管理由自己产生的连接--><driver-url>jdbc:m ysql://localhost:3306/schoolproject?useUnicode=true&amp;characterEnco ding=UTF8</driver-url><!—JDBC驱动程序--><driver-class>com.m ysql.jdbc.Driver</driver-class><driver-properties><property nam e="user" value="root"/><property nam e="password" value=""/></driver-properties><!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁--><house-keeping-sleep-tim e>90000</house-keeping-sleep-tim e><!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受--><maximu m-new-connections>20</maximum-new-connections><!-- 最少保持的空闲连接数--><prototype-count>5</prototype-count><!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定--><maximu m-connection-count>100</maximu m-connection-count><!-- 最小连接数--><minimum-connection-count>10</minimu m-connection-count></proxool></something-else-entirely>(2)配置hibernate.cfg.xml文件<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configurationPUBLIC "-//Hibernate/Hibernate Configuration DTD//EN""/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory ><property nam e="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property><property nam e="hibernate.proxool.pool_alias">DBPool</property><property nam e="hibernate.proxool.xml">proxoolconf.xml</property><!--是否将运行期生成的SQL输出到日志以供调试--><property nam e="show_sql">t rue</property><!--指定连接的语言--><property nam e="dialect">org.hibernate.dialect.MySQLDialect</property><!--映射Student这个资源--><mapping resource="com/wqbi/model/pojo/student.hbm.xml" /></session-factory></hibernate-configuration>(1) hibernate.connection.provider_class定义Hibernate的连接加载类,这里Proxool 连接池是用这个,不同的连接池有不同的加载类,可以查阅Hibernate文档获取相关信息(2) hibernate.proxool.pool_alias这里就是用我们上面提到的连接池的别名(3) hibernate.proxool.xml是向Hibernate声明连接池的配置文件位置,可以用相对或绝对路径,用相对路径时要注意一定在要Path范围内!不然会抛出异常。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.官网下载地址:/projects/proxool/files/2.说明一下我的配置环境JRE1.6, tomcat6.0,hibernate3.1, proxool-0.9.0RC3数据库为MSSQL2005 JDBC驱动为sqljdbc.jar3.配置步聚(1) 建立proxool.xml文件,路径为根目录src下即与hibernate.cfg.xml同目录,内容如下:<?xml version="1.0" encoding="UTF-8"?><!--the proxool configuration can be embedded within your own application's.Anything outside the "proxool" tag is ignored.--><something-else-entirely><proxool><alias>mssqlProxool</alias><driver-url>jdbc:sqlserver://XXX.XXX.XXX.XX:1433;databaseName=XXX</driver-ur l><driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class> <driver-properties><property name="user" value="sa" /><property name="password" value="XXX" /></driver-properties><house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql><house-keeping-sleep-time>90000</house-keeping-sleep-time><simultaneous-build-throttle>20</simultaneous-build-throttle><maximum-connection-count>100</maximum-connection-count><minimum-connection-count>10</minimum-connection-count><maximum-connection-lifetime>3600000</maximum-connection-lifetime></proxool></something-else-entirely>属性列表说明:fatal-sql-exception: 它是一个逗号分割的信息片段.当一个SQL异常发生时,他的异常信息将与这个信息片段进行比较.如果在片段中存在,那么这个异常将被认为是个致命错误(Fatal SQL Exception ).这种情况下,数据库连接将要被放弃.无论发生什么,这个异常将会被重掷以提供给消费者.用户最好自己配置一个不同的异常来抛出.fatal-sql-exception-wrapper-class:正如上面所说,你最好配置一个不同的异常来重掷.利用这个属性,用户可以包装SQLException,使他变成另外一个异常.这个异常或者继承SQLException或者继承字RuntimeException.proxool自带了2个实现:'org.logicalcobwebs.proxool.FatalSQLException' 和'org.logicalcobwebs.proxool.FatalRuntimeException'.后者更合适.house-keeping-sleep-time: house keeper 保留线程处于睡眠状态的最长时间,house keeper 的职责就是检查各个连接的状态,并判断是否需要销毁或者创建.house-keeping-test-sql: 如果发现了空闲的数据库连接.house keeper 将会用这个语句来测试.这个语句最好非常快的被执行.如果没有定义,测试过程将会被忽略。

injectable-connection-interface: 允许proxool实现被代理的connection对象的方法. injectable-statement-interface: 允许proxool实现被代理的Statement 对象方法. injectable-prepared-statement-interface: 允许proxool实现被代理的PreparedStatement 对象方法.injectable-callable-statement-interface: 允许proxool实现被代理的CallableStatement 对象方法.jmx: 如果属性为true,就会注册一个消息Bean到jms服务,消息Bean对象名: "Proxool:type=Pool, name=<alias>". 默认值为false.jmx-agent-id: 一个逗号分隔的JMX代理列表(如使用MBeanServerFactory.findMBeanServer(String agentId)注册的连接池。

)这个属性是仅当"jmx"属性设置为"true"才有效。

所有注册jmx服务器使用这个属性是不确定的jndi-name: 数据源的名称maximum-active-time: 如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.所以确认一下你的服务器的带宽.然后定一个合适的值.默认是5分钟.maximum-connection-count: 最大的数据库连接数.maximum-connection-lifetime: 一个线程的最大寿命.minimum-connection-count: 最小的数据库连接数overload-without-refusal-lifetime: 这可以帮助我们确定连接池的状态。

如果我们已经拒绝了一个连接在这个设定值(毫秒),然后被认为是超载。

默认为60秒。

prototype-count: 连接池中可用的连接数量.如果当前的连接池中的连接少于这个数值.新的连接将被建立(假设没有超过最大可用数).例如.我们有3个活动连接2个可用连接,而我们的prototype-count是4,那么数据库连接池将试图建立另外2个连接.这和 minimum-connection-count不同.minimum-connection-count把活动的连接也计算在内.prototype-count 是spare connections 的数量.recently-started-threshold: 这可以帮助我们确定连接池的状态,连接数少还是多或超载。

只要至少有一个连接已开始在此值(毫秒)内,或者有一些多余的可用连接,那么我们假设连接池是开启的。

默认为60秒simultaneous-build-throttle: 这是我们可一次建立的最大连接数。

那就是新增的连接请求,但还没有可供使用的连接。

由于连接可以使用多线程,在有限的时间之间建立联系从而带来可用连接,但是我们需要通过一些方式确认一些线程并不是立即响应连接请求的,默认是10。

statistics: 连接池使用状况统计。

参数“10s,1m,1d”statistics-log-level: 日志统计跟踪类型。

参数“ERROR”或“INFO”test-before-use: 如果为true,在每个连接被测试前都会服务这个连接,如果一个连接失败,那么将被丢弃,另一个连接将会被处理,如果所有连接都失败,一个新的连接将会被建立。

否则将会抛出一个SQLException异常。

test-after-use: 如果为true,在每个连接被测试后都会服务这个连接,使其回到连接池中,如果连接失败,那么将被废弃。

trace: 如果为true,那么每个被执行的SQL语句将会在执行期被log记录(DEBUG LEVEL).你也可以注册一个ConnectionListener (参看ProxoolFacade)得到这些信息.(2)修改hibernate.cfg.xml文件,内容如下:<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration><session-factory><property name="hibernate.proxool.pool_alias">mssqlProxool</property><property name="hibernate.proxool.xml">proxool.xml</property><propertyname="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConn ectionProvider</property><property name="hibernate.proxool.existing_pool">true</property><propertyname="dialect">org.hibernate.dialect.SQLServerDialect</property> <property name="e_query_cache">true</property></session-factory></hibernate-configuration>这里需注意三点:1.别名与proxool中的别名保持一致.2.路径确保正确3一般网上只说明了以上两点,hibernate.proxool.existing_pool 这个参数很重要hibernate.proxool.existing_pool:此值设为 false,当 hibernate 开始被调用时,就会初始化 proxool,进行数据库连接等操作;(3)要让程序直接使用proxool连接池,可以在web.xml中配置初始化servlet,在web容器加载的时候自动加载配置文件<servlet><servlet-name>ServletConfigurator </servlet-name><servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurat or</servlet-class><init-param><param-name>xmlFile</param-name><param-value>/WEB-INF/classes/proxool.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet>注意:如果同时配置了web.xml和hibernate.cfg.xml会产生错误:org.logicalcobwebs.proxool.ProxoolException: Parsing failed.因为同名的proxool连接池已经启动,而hibernate开始运行时会自己启动关联的proxool 连接池.所以此时应改变hibernate.cfg.xml配置为:<property name="hibernate.proxool.existing_pool">true</property>(4)这一步是可选的在应用中实时监控连接池<servlet><servlet-name>adminProxool</servlet-name><servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</se rvlet-class></servlet><servlet-mapping><servlet-name>adminProxool</servlet-name><url-pattern>/admin/proxool</url-pattern></servlet-mapping>访问http://localhost:8080/项目名称/admin/proxool即可看到页面4.错误解析:常遇到的问题是org.hibernate.HibernateException:Proxool Provider unable to load JAXP configurator file:proxool.xml这有可能是由于proxool包版本的问题,我先后试过proxool-0.9.0RC1 proxool-0.9.0RC2 proxool-0.9.0RC3proxool-0.9.0 proxool-0.9.1 结果是高版本的0.9.0和0.9.1都会有这个问题,使用RC1或者以下的版本则没有.希望以上的解说写成word文档提供下载,希望能给准备使用proxool的朋友以帮助.。

相关文档
最新文档