当前位置: 代码迷 >> Web前端 >> proxool 0.9.1配备使用
  详细解决方案

proxool 0.9.1配备使用

热度:594   发布时间:2012-08-21 13:00:22.0
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方式没有测试过