Proxool-0.9.1構成


プロジェクト内のデータベースの接続については、一般的にデータソース方式が採用されています.どうせ今回は自分で実現したので、他の要求はなく、ネット上で良いデータソースの実現を探しました.いくつかの記事を見て、Proxoolの方が良いと言われているので、それを使ってデータソースを実現しましょう.次のように実現します.
 
1,プロジェクト中のWEB-INFディレクトリの下にproxoolを作成する.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>

 
 
2,プロジェクトでweb.xmlに構成されたデータソースを追加し、web-appの下に次の内容を追加します.
 
 
<!--       -->
<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、テスト:
 
 
    //        
    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-6 u 11-windows-i 586-p
NetBeansバージョン:netbeans-6.5-ml-windows
proxoolバージョン:proxool-0.9.1
 
初めてデータ・ソースを使用したが、データ・ソースのメリットはまだ理解されていない.それらの圧力テストなどはありません.
 
勉強を続けて・・・