proxool-0.9.1配置

 
項目中關於數據庫的連接,一般都採用數據源的方式。反正這次是自己實現,沒有其他的要求,就在網上找了一個好點的數據源的實現。看了好幾篇文章,都說 Proxool 比較好,就採用它來實現數據源吧。下面來實現:


1,在項目中的 WEB-INF 目錄下建立 proxool.xml 文件(在其他目錄也行,只要能找到就行),內容爲:

 

Xml代碼 
<?xml version="1.0" encoding="UTF-8"?>   
   
<proxool>   
    <!-- 數據庫連接別名,通過 proxool.15DayWeb 來獲取此連接 -->   
    <alias>15DayWeb</alias>   
    <!-- 數據庫驅動 -->   
    <driver-url>jdbc:mysql://localhost:3306/15dayweb</driver-url>   
    <!-- 驅動程序類 -->   
    <driver-class>com.mysql.jdbc.Driver</driver-class>   
    <!-- 聯機數據庫的用戶和密碼 -->   
    <driver-properties>   
        <property name="user" value="root" />   
        <property name="password" value="root" />   
    </driver-properties>   
    <!-- 最小連接數量,建議設置0以上,保證第一次連接時間 -->   
    <minimum-connection-count>2</minimum-connection-count>   
     <!-- 最大連接數量,如果超過最大連接數量則會拋出異常    
             連接數設置過多,服務器CPU和內存性能消耗很大 -->   
    <maximum-connection-count>20</maximum-connection-count>   
    <!-- 某一時間點的最大連接數 -->   
    <simultaneous-build-throttle>10</simultaneous-build-throttle>   
    <!-- 一次性產生連接的數量 -->   
    <prototype-count>2</prototype-count>   
    <!-- 連接最大時間活動 默認5分鐘 單位:秒 -->   
    <maximum-active-time>120</maximum-active-time>   
    <!-- 連接最大生命時間 默認4小時 單位:秒 -->   
    <maximum-connection-lifetime>600</maximum-connection-lifetime>   
</proxool>   

<?xml version="1.0" encoding="UTF-8"?>

<proxool>
    <!-- 數據庫連接別名,通過 proxool.15DayWeb 來獲取此連接 -->
    <alias>15DayWeb</alias>
    <!-- 數據庫驅動 -->
    <driver-url>jdbc:mysql://localhost:3306/15dayweb</driver-url>
    <!-- 驅動程序類 -->
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <!-- 聯機數據庫的用戶和密碼 -->
    <driver-properties>
        <property name="user" value="root" />
        <property name="password" value="root" />
    </driver-properties>
    <!-- 最小連接數量,建議設置0以上,保證第一次連接時間 -->
    <minimum-connection-count>2</minimum-connection-count>
    <!-- 最大連接數量,如果超過最大連接數量則會拋出異常
            連接數設置過多,服務器CPU和內存性能消耗很大 -->
    <maximum-connection-count>20</maximum-connection-count>
    <!-- 某一時間點的最大連接數 -->
    <simultaneous-build-throttle>10</simultaneous-build-throttle>
    <!-- 一次性產生連接的數量 -->
    <prototype-count>2</prototype-count>
    <!-- 連接最大時間活動 默認5分鐘 單位:秒 -->
    <maximum-active-time>120</maximum-active-time>
    <!-- 連接最大生命時間 默認4小時 單位:秒 -->
    <maximum-connection-lifetime>600</maximum-connection-lifetime>
</proxool>


2,在項目中 web.xml 中添加所配置的數據源,在 web-app 下添加如下內容:

 

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/proxool.xml</param-value>   
    </init-param>   
    <load-on-startup>1</load-on-startup>   
</servlet>   
<!-- proxool提供的管理監控工具,可查看當前數據庫連接情況。 -->   
<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>   

<!-- 配置數據源 -->
<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>
<!-- proxool提供的管理監控工具,可查看當前數據庫連接情況。 -->
<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>


對於管理監視工具,如果不使用可以不進行配置。


3,測試:

 

Java代碼 
// 獲取數據庫連接    
public void getConnection() throws Exception {    
        
    if (conn == null) {    
        //proxool驅動類    
         Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");    
        // 此處的DBPool是在proxool.xml中配置的連接池別名    
         conn = DriverManager.getConnection("proxool.15DayWeb");    
     }    
}    
   
// 數據庫訪問,執行查詢操作    
public ResultSet query(String sql) throws Exception {    
    // 初始化數據庫連接    
     getConnection();    
    // 創建 Statement 對象    
     Statement stmt = conn.createStatement();    
    // 構造 sql 語句    
     sql = "select * from about_team_table";    
    return stmt.executeQuery(sql);    
}    
   
// 測試是否可以正常讀取表 about_team_table 的數據    
public static void main(String[] args) throws Exception {    
   
     DbDao dd = new DbDao();    
     ResultSet rs = dd.query("");    
    while (rs.next()) {    
         System.out.println(rs.getInt("id"));    
         System.out.println(rs.getString("name"));    
         System.out.println(rs.getString(3));    
         System.out.println(rs.getString(4));    
         System.out.println(rs.getBinaryStream("photo"));    
     }    
}   

// 獲取數據庫連接
    public void getConnection() throws Exception {
        
        if (conn == null) {
            //proxool驅動類
            Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
            // 此處的DBPool是在proxool.xml中配置的連接池別名
            conn = DriverManager.getConnection("proxool.15DayWeb");
        }
    }

    // 數據庫訪問,執行查詢操作
    public ResultSet query(String sql) throws Exception {
        // 初始化數據庫連接
        getConnection();
        // 創建 Statement 對象
        Statement stmt = conn.createStatement();
        // 構造 sql 語句
        sql = "select * from about_team_table";
        return stmt.executeQuery(sql);
    }

    // 測試是否可以正常讀取表 about_team_table 的數據
    public static void main(String[] args) throws Exception {

        DbDao dd = new DbDao();
        ResultSet rs = dd.query("");
        while (rs.next()) {
            System.out.println(rs.getInt("id"));
            System.out.println(rs.getString("name"));
            System.out.println(rs.getString(3));
            System.out.println(rs.getString(4));
            System.out.println(rs.getBinaryStream("photo"));
        }
    }


可以正常使用,測試中不主動關閉連接,在監視工具中當超過活動連接時間自動銷燬,不過在使用中還是要釋放連接的,連接的最大數畢竟是有限的。


tomcat 版本:apache-tomcat-6.0.18

JDK 版本:jdk-6u11-windows-i586-p

NetBeans版本:netbeans-6.5-ml-windows

proxool 版本:proxool-0.9.1

 


 

發佈了11 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章