J 2 EE開発技術ポイント6:Proxoolデータベース接続プール


前言Proxoolも現在主流のデータベース接続プールであり、ProxoolはJavaデータベース接続プール技術である.sourceforgeの下のオープンソースプロジェクトでもあり、このプロジェクトは丈夫で使いやすい接続プールを提供し、最も重要なのはこの接続プールが監視機能を提供し、使いやすく、接続漏れを発見しやすいことです.次はProxool接続プールのいくつかのテクノロジーの概要です.
Proxool接続プールを使用する方法公式に提供されているドキュメントには、Proxoolを使用する方法がいくつかあります.ここでは、プロファイルを使用する方法と、Proxoolを使用する方法の2つだけを紹介します.1つは、属性を直接設定することで使用します.Proxool接続プールのデータソースが使用されています.jdbc poolと同様にデータソースで構成されています
1、属性を直接設定する方法
Proxoolデータベース接続オブジェクトを返すツールクラスを作成します.
package cp;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.logicalcobwebs.proxool.ProxoolDataSource;
import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;

public class Proxool {

    private ProxoolDataSource dataSource = null;
    public Proxool() {
        dataSource = new ProxoolDataSource();
        init2();
    }

    public void init2(){
         dataSource = new ProxoolDataSource(); 
         dataSource.setDriver("com.mysql.jdbc.Driver"); 
         dataSource.setDriverUrl("jdbc:mysql://localhost/test"); 
         dataSource.setUser("root"); 
         dataSource.setPassword("1234"); 
         dataSource.setAlias("mysql"); 
         dataSource.setMaximumConnectionCount(5); 
         dataSource.setMinimumConnectionCount(0); 
         dataSource.setMaximumActiveTime(5); 
    }

    public Connection getProxoolConnection2() {
        Connection connection = null;
        try {
            connection = dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
}

次に、テストコードを作成します.
public class TestCp {
    public static void main(String[] args) throws SQLException {
        Proxool p = new Proxool();
        for (int i = 0; i < 5; i++) {
            Connection con = p.getProxoolConnection2();
            System.out.println(con);
        }
    }
}

テストの結果は、異なる5つの接続オブジェクトが返されていることがわかります.この方式を使用するメリットは簡単で直接的で、欠点はメンテナンスが容易ではなく、属性が変化するにはコードを修正する必要があることです.
2、プロファイルを使用するには、Proxool接続プールをプロファイルで使用する方法を見てみましょう.まず、proxool.xmlプロファイルを作成し、srcルートディレクトリの下にしばらく置く必要があります.ファイルの内容は次のとおりです.
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
    <proxool>
        <alias>mysql</alias>
        <!--       -->
        <driver-url>jdbc:mysql://127.0.0.1/test</driver-url>
        <!--url-->
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <!--    -->
        <driver-properties>
            <property name="user" value="root" />
            <property name="password" value="1234" />
        </driver-properties>
        <!--     ,  (  )         -->
        <simultaneous-build-throttle>10</simultaneous-build-throttle>
        <!--     (  5 )-->
        <maximum-connection-count>100</maximum-connection-count>
        <!--     (  2 ) -->
        <minimum-connection-count>10</minimum-connection-count>
        <!--proxool               (  )-->
        <house-keeping-sleep-time>120000</house-keeping-sleep-time>
        <!--           -->
        <prototype-count>10</prototype-count>
        <!--        -->
        <test-before-use>true</test-before-use>
        <!--            -->
        <house-keeping-test-sql>select 1</house-keeping-test-sql>
    </proxool>
</something-else-entirely>

上記のプロパティは、最初の方法で設定することもできます.その後、接続を取得する方法を記述する必要があります.コードは次のとおりです.
public class Proxool {
    public Proxool() {
        dataSource = new ProxoolDataSource();
        init();
    }

    public void init() {
        InputStream in = Proxool.class.getResourceAsStream("/proxool.xml");
        Reader reader = null;
        try {
            reader = new InputStreamReader(in, "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        try {
            JAXPConfigurator.configure(reader, false);
        } catch (ProxoolException e) {
            e.printStackTrace();
        }
    }

    public Connection getProxoolConnection() {
        Connection connection = null;
        try {
            connection = DriverManager.getConnection("proxool.mysql");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
}

両者の違いに注意して、proxool.xmlというプロファイル(ストリームで)を読み込む必要があります.読み込んだ後、JAXPConfiguratorのconfigureメソッドを呼び出すとxmlファイルの解析が完了します.その後、クライアントがgetConnectionメソッドを直接呼び出すと、データベース接続プールから接続が取得されます.テストコードは次のとおりです.
public class TestCp {

    public static void main(String[] args) throws SQLException {
        Proxool p = new Proxool();
        for (int i = 0; i < 5; i++) {
            Connection con = p.getProxoolConnection();
            System.out.println(con);
        }
    }
}

テストは次のとおりです.
Proxoolデータベース接続プールの小結Proxoolデータベース接続プールを使用すると、データベース接続を管理し、サーバの応答性能を向上させることができます.jdbc poolデータベース接続プールとProxoolデータベース接続プールをまとめると、両方に一定の共通性があることがわかります.いずれもデータソースで接続を取得している点は、通常のjdbc操作とは大きく異なり、Drivermanagerクラスは使用後、リソースをタイムリーに解放することができず、再利用できません.一方、データベース接続プールは、データベース接続プールの作成、解放、破棄など、接続オブジェクトを管理します.
Proxoolは上記の2つの方法が一般的ですが、コンフィギュレーションファイルの使用は柔軟性が高く、コードのメンテナンスが容易で、この使用方法をお勧めします.