proxool 0.9.1配置使用

转载。。

proxool 0.9.1配置使用 配置管理JDBCMySQLSQL活动.首先去官方网站下载proxool 0.9.1的zip包
lib
+|proxool-0.9.1.jar
+|proxool-cglib.jar
使用是应再导入commons-logging.jar


这里使用proxool.xml 配置,不会写的可以在zip包的api中查找。配置如下:

Java代码
1.<?xml version="1.0" encoding="UTF-8"?>
2.<something-else-entirely>
3. <!-- 此配置的注解针对的是proxool 0.9.1 -->
4. <proxool>
5. <!-- 别名 -->
6. <alias>test</alias>
7. <!-- 数据库连接的URL -->
8. <driver-url>jdbc:mysql://localhost:3306/temp</driver-url>
9. <!-- 数据库驱动类 -->
10. <driver-class>org.gjt.mm.mysql.Driver</driver-class>
11. <driver-properties>
12. <!-- 数据库的用户名 -->
13. <property name="user" value="root"/>
14. <!-- 数据库的密码 -->
15. <property name="password" value="root"/>
16. </driver-properties>
17. <!-- 最大连接数,默认为15 -->
18. <maximum-connection-count>20</maximum-connection-count>
19. <!-- 最小连接数,默认为5 -->
20. <minimum-connection-count>2</minimum-connection-count>
21. <!-- 如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.
22. 所以确认一下你的服务器的带宽.然后定一个合适的值,默认为5分钟,此处设置为1分钟,以毫秒计 -->
23. <maximum-active-time>60000</maximum-active-time>
24. <!-- 最大连接生命周期 ,默认为4小时,此处设置为5小时,以毫秒计-->
25. <minimum-connection-count>18000000</minimum-connection-count>
26. <!-- 如果发现了空闲的数据库连接.house keeper 将会用这个语句来测试.
27. 这个语句最好非常快的被执行.如果没有定义,测试过程将会被忽略。 -->
28. <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
29.
30. <!-- 以上是常规配置 -->
31.
32. <!-- 下面的是其余的一些配置,没有用过都是在网上搜到的,记录下来以备使用 -->
33. <!--
34. //house keeper 保留线程处于睡眠状态的最长时间,house keeper 的职责就是检查各个连接的状态,
35. //并判断是否需要销毁或者创建.默认为30秒,此处设置为40秒,以毫秒计。
36. <proxool:house-keeping-sleep-time>40000</proxool:house-keeping-sleep-time>
37. //详细信息设置。 参数 bool 值
38. <proxool:verbose>true</proxool:verbose>
39. //如果为true,那么每个被执行的SQL语句将会在执行期被log记录(DEBUG LEVEL).
40. //你也可以注册一个ConnectionListener (参看ProxoolFacade)得到这些信息
41. <proxool:trace>true</proxool:trace>
42. //它是一个逗号分割的信息片段.当一个SQL异常发生时,他的异常信息将与这个信息片段进行比较.
43. //如果在片段中存在,那么这个异常将被认为是个致命错误 (Fatal SQL Exception ).
44. //这种情况下,数据库连接将要被放弃.无论发生什么,这个异常将会被重掷以提供给消费者.
45. //用户最好自己配置一个不同的异常来抛出.
46. <proxool:fatal-sql-exception>Fatal error</proxool:fatal-sql-exception>
47. //连接池中可用的连接数量.如果当前的连接池中的连接少于这个数值.
48. //新的连接将被建立(假设没有超过最大可用数).
49. //例如.我们有3个活动连接2个可用连接, 而我们的prototype-count是4,
50. //那么数据库连接池将试图建立另外2个连接.
51. //这和 minimum-connection-count不同.
52. //minimum-connection-count把活动的连接也计算在内.
53. //prototype-count 是spare connections 的数量
54. <proxool:prototype-count>2</proxool:prototype-count>
55. -->
56. </proxool>
57.</something-else-entirely>
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<!-- 此配置的注解针对的是proxool 0.9.1 -->
<proxool>
<!-- 别名 -->
<alias>test</alias>
<!-- 数据库连接的URL -->
<driver-url>jdbc:mysql://localhost:3306/temp</driver-url>
<!-- 数据库驱动类 -->
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<driver-properties>
<!-- 数据库的用户名 -->
<property name="user" value="root"/>
<!-- 数据库的密码 -->
<property name="password" value="root"/>
</driver-properties>
<!-- 最大连接数,默认为15 -->
<maximum-connection-count>20</maximum-connection-count>
<!-- 最小连接数,默认为5 -->
<minimum-connection-count>2</minimum-connection-count>
<!-- 如果housekeeper 检测到某个线程的活动时间大于这个数值.它将会杀掉这个线程.
所以确认一下你的服务器的带宽.然后定一个合适的值,默认为5分钟,此处设置为1分钟,以毫秒计 -->
<maximum-active-time>60000</maximum-active-time>
<!-- 最大连接生命周期 ,默认为4小时,此处设置为5小时,以毫秒计-->
<minimum-connection-count>18000000</minimum-connection-count>
<!-- 如果发现了空闲的数据库连接.house keeper 将会用这个语句来测试.
这个语句最好非常快的被执行.如果没有定义,测试过程将会被忽略。 -->
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>

<!-- 以上是常规配置 -->

<!-- 下面的是其余的一些配置,没有用过都是在网上搜到的,记录下来以备使用 -->
<!--
//house keeper 保留线程处于睡眠状态的最长时间,house keeper 的职责就是检查各个连接的状态,
//并判断是否需要销毁或者创建.默认为30秒,此处设置为40秒,以毫秒计。
<proxool:house-keeping-sleep-time>40000</proxool:house-keeping-sleep-time>
//详细信息设置。 参数 bool 值
<proxool:verbose>true</proxool:verbose>
//如果为true,那么每个被执行的SQL语句将会在执行期被log记录(DEBUG LEVEL).
//你也可以注册一个ConnectionListener (参看ProxoolFacade)得到这些信息
<proxool:trace>true</proxool:trace>
//它是一个逗号分割的信息片段.当一个SQL异常发生时,他的异常信息将与这个信息片段进行比较.
//如果在片段中存在,那么这个异常将被认为是个致命错误 (Fatal SQL Exception ).
//这种情况下,数据库连接将要被放弃.无论发生什么,这个异常将会被重掷以提供给消费者.
//用户最好自己配置一个不同的异常来抛出.
<proxool:fatal-sql-exception>Fatal error</proxool:fatal-sql-exception>
//连接池中可用的连接数量.如果当前的连接池中的连接少于这个数值.
//新的连接将被建立(假设没有超过最大可用数).
//例如.我们有3个活动连接2个可用连接, 而我们的prototype-count是4,
//那么数据库连接池将试图建立另外2个连接.
//这和 minimum-connection-count不同.
//minimum-connection-count把活动的连接也计算在内.
//prototype-count 是spare connections 的数量
<proxool:prototype-count>2</proxool:prototype-count>
-->
</proxool>
</something-else-entirely>

基于web的应用接着配置web.xml,添加管理员组建的配置

Java代码
1.<?xml version="1.0" encoding="UTF-8"?>
2.<web-app version="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>ServletConfigurator</servlet-name>
8. <servlet-class>
9. org.logicalcobwebs.proxool.configuration.ServletConfigurator
10. </servlet-class>
11. <init-param>
12. <param-name>xmlFile</param-name>
13. <param-value>WEB-INF/proxool.xml</param-value>
14. </init-param>
15. <load-on-startup>0</load-on-startup>
16. </servlet>
17.
18. <servlet>
19. <servlet-name>Admin</servlet-name>
20. <servlet-class>
21. org.logicalcobwebs.proxool.admin.servlet.AdminServlet
22. </servlet-class>
23. </servlet>
24.
25. <servlet-mapping>
26. <servlet-name>Admin</servlet-name>
27. <url-pattern>/admin</url-pattern>
28. </servlet-mapping>
29. <welcome-file-list>
30. <welcome-file>index.jsp</welcome-file>
31. </welcome-file-list>
32.</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<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>0</load-on-startup>
</servlet>

<servlet>
<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>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


3.在index.jsp中使用jdbc连接数据库

Java代码
1.<%@ page contentType="text/html;charset=UTF-8" import="java.sql.*"
2. pageEncoding="UTF-8"%>
3.<html>
4. <head>
5. <title></title>
6. </head>
7. <body>
8. <%
9. Connection conn = null;
10. try {
11. Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
12. conn = DriverManager.getConnection("proxool.test");
13. out.println("打开一个连接-------------");
14. out.println(conn);
15. } catch (Exception e) {
16. out.println(e);
17. } finally {
18. try {
19. conn.close();
20. } catch (Exception e) {
21. out.println(e);
22. }
23. }
24. %>
25. </body>
26.</html>
<%@ page contentType="text/html;charset=UTF-8" import="java.sql.*"
pageEncoding="UTF-8"%>
<html>
<head>
<title></title>
</head>
<body>
<%
Connection conn = null;
try {
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
conn = DriverManager.getConnection("proxool.test");
out.println("打开一个连接-------------");
out.println(conn);
} catch (Exception e) {
out.println(e);
} finally {
try {
conn.close();
} catch (Exception e) {
out.println(e);
}
}
%>
</body>
</html>


4.附录使用propertie文件配置

Java代码
1.也可以采用 properties, 在程序 PropertyConfigurator.configure("proxool.properties"); 文件设置
2.
3.WEB-INF/proxool.properties
4.jdbc-0.proxool.alias=property-test
5.jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/test
6.jdbc-0.proxool.driver-class=org.gjt.mm.mysql.Driver
7.jdbc-0.user=root
8.jdbc-0.password=password
9.jdbc-0.proxool.maximum-connection-count=10
10.jdbc-0.proxool.house-keeping-test-sql=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


---------properties方式没有测试过
proxool.0.9.1基础上做了修改。 改jar名称为:proxool-0.9.1.1,主要修改为以下3点: 1.解决不能Unregister jdbc driver的内存泄露问题。 十二月 02, 2013 8:19:43 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE: The web application [/xxx] registered the JDBC driver [org.logicalcobwebs.proxool.ProxoolDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 十二月 02, 2013 8:19:43 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE: The web application [/xxx] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 十二月 02, 2013 8:19:43 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE: The web application [/xxx] registered the JDBC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 2.解决housekeeper内存泄露问题 3.解决与spring配合时,只能在spring的定义中以bean方式加载proxool的问题。(使用servlet方式加载也可以,只是在启动时报错) 加载方式修改为: xmlFile /WEB-INF/conf/proxool.xml org.logicalcobwebs.proxool.configuration.ListenerConfigurator 与spring配合使用时,本加载需要放在spring前面 org.logicalcobwebs.proxool.configuration.ListenerConfigurator org.springframework.web.context.ContextLoaderListener 4.修正了proxool在多线程环境下的的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值