方式一:
在Spring的"applicationContext.xml"中的dataSource bean定义——java
1 <bean id="dataSource" 2 class="org.logicalcobwebs.proxool.ProxoolDataSource"> 3 <property name="driver"> 4 <value>com.mysql.jdbc.Driver</value> 5 </property> 6 <property name="driverUrl"> 7 <value>jdbc:mysql://localhost:3306/dbname?user=yourname&password=yourpass</value> 8 </property> 9 <property name="user" value="yourname" /> 10 <property name="password" value="yourpass" /> 11 <property name="alias" value="Pool_dbname" /> 12 <property name="houseKeepingSleepTime" value="90000" /> 13 <property name="prototypeCount" value="0" /> 14 <property name="maximumConnectionCount" value="50" /> 15 <property name="minimumConnectionCount" value="2" /> 16 <property name="simultaneousBuildThrottle" value="50" /> 17 <property name="maximumConnectionLifetime" value="14400000" /> 18 <property name="houseKeepingTestSql" value="select CURRENT_DATE" /> 19 </bean>
第一种方式须要把用户名和密码写在链接串里面,
ProxoolDataSource类提供的user,password属性彷佛没有什么用。
不管提供什么,它都会以空用户名、密码去链接数据库。
这多是Proxool RC0.93的一个bug,实在让人恼火,不知道最新的0.9.1有没有fix这个bug。
不过配置中的user,password两个属性还必须设置,不然hibernate会报空指针错误。mysql
方式二:
在Spring的"applicationContext.xml"中的dataSource bean定义——web
1 <bean id="dataSource" 2 class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 3 <property name="driverClassName"> 4 <value>org.logicalcobwebs.proxool.ProxoolDriver</value> 5 </property> 6 <property name="url"> 7 <value>proxool.Pool_dbname</value> 8 </property> 9 </bean>
第二种方式须要预先在"web.xml"先配置好Proxool链接池,配置以下:spring
1 <servlet> 2 <servlet-name>proxoolServletConfigurator</servlet-name> 3 <servlet-class> 4 org.logicalcobwebs.proxool.configuration.ServletConfigurator 5 </servlet-class> 6 <init-param> 7 <param-name>xmlFile</param-name> 8 <param-value>WEB-INF/proxool.xml</param-value> 9 </init-param> 10 <load-on-startup>1</load-on-startup> 11 </servlet> 12 13 <servlet> 14 <servlet-name>context</servlet-name> 15 <servlet-class> 16 org.springframework.web.context.ContextLoaderServlet 17 </servlet-class> 18 <load-on-startup>2</load-on-startup> 19 </servlet>
注意,第二种方式下Spring的上下文加载若是想使用listener方式(Struts2要求),
则与链接池有关的Bean全得延迟初始化。由于listener比servlet优先初始化,
若是相关Bean不是lazy-init的话,则启动服务器时会出现Bean找不到链接定义的异常。sql
1 <listener> 2 <listener-class> 3 org.springframework.web.context.ContextLoaderListener 4 </listener-class> 5 </listener>
其中proxool的配置文件能够采用xmlFile"proxool.xml"或者propertyFile"proxool.properties"数据库
"proxool.xml"格式以下:服务器
1 <?xml version="1.0" encoding="UTF-8"?> 2 <proxool-config> 3 <proxool> 4 <alias>Pool_dbname</alias> 5 <driver-url>jdbc:mysql://localhost:3306/dbname</driver-url> 6 <driver-class>com.mysql.jdbc.Driver</driver-class> 7 <driver-properties> 8 <property name="user" value="yourname"/> 9 <property name="password" value="yourpass"/> 10 </driver-properties> 11 <house-keeping-sleep-time>60000</house-keeping-sleep-time> 12 <maximum-connection-count>20</maximum-connection-count> 13 <minimum-connection-count>2</minimum-connection-count> 14 <prototype-count>0</prototype-count> 15 <simultaneous-build-throttle>20</simultaneous-build-throttle> 16 <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql> 17 <statistics>15s,10m,1d</statistics> 18 <statistics-log-level>INFO</statistics-log-level> 19 </proxool> 20 <proxool> 21 <!--能够配置多个库--> 22 </proxool> 23 </proxool-config>
"proxool.properties"格式以下:app
1 jdbc-0.proxool.alias=Pool_dbname 2 jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/dbname 3 jdbc-0.proxool.driver-class=com.mysql.jdbc.Driver 4 jdbc-0.user=yourname 5 jdbc-0.password=yourpass 6 jdbc-0.proxool.house-keeping-sleep-time=60000 7 jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE 8 jdbc-0.proxool.maximum-connection-count=10 9 jdbc-0.proxool.minimum-connection-count=3 10 jdbc-0.proxool.maximum-connection-lifetime=18000000 11 jdbc-0.proxool.prototype-count=3 12 jdbc-0.proxool.simultaneous-build-throttle=10 13 jdbc-0.proxool.recently-started-threshold=60000 14 jdbc-0.proxool.overload-without-refusal-lifetime=50000 15 jdbc-0.proxool.maximum-active-time=60000 16 jdbc-0.proxool.verbose=true 17 jdbc-0.proxool.trace=true 18 jdbc-0.proxool.fatal-sql-exception=Fatal error 19 20 jdbc-2.proxool.alias=Pool_dbname2 21 …… 22 <!--能够配置多个库--> 23
3、更详细的proxool.xml的配置属性说明: jsp
属性列表说明:测试
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: 略
jmx-agent-id: 略
jndi-name: 数据源的名称
maximum-active-time: 若是housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.因此确认一下你的服务器的带宽.而后定一个合适的值.默认是5分钟.
maximum-connection-count: 最大的数据库链接数.
maximum-connection-lifetime: 一个线程的最大寿命.
minimum-connection-count: 最小的数据库链接数
overload-without-refusal-lifetime: 略
prototype-count: 链接池中可用的链接数量.若是当前的链接池中的链接少于这个数值.新的链接将被创建(假设没有超过最大可用数).例如.咱们有3个活动链接2个可用链接,而咱们的prototype-count是4,那么数据库链接池将试图创建另外2个链接.这和 minimum-connection-count不一样. minimum-connection-count把活动的链接也计算在内.prototype-count 是spare connections 的数量.
recently-started-threshold: 略
simultaneous-build-throttle: 略
statistics: 链接池使用情况统计。 参数“10s,1m,1d”
statistics-log-level: 日志统计跟踪类型。 参数“ERROR”或 “INFO”
test-before-use: 略
test-after-use: 略
trace: 若是为true,那么每一个被执行的SQL语句将会在执行期被log记录(DEBUG LEVEL).你也能够注册一个ConnectionListener (参看ProxoolFacade)获得这些信息.
verbose: 详细信息设置。 参数 bool 值