J 2 EE開発技術ポイント6:Proxoolデータベース接続プール
12283 ワード
前言Proxoolも現在主流のデータベース接続プールであり、ProxoolはJavaデータベース接続プール技術である.sourceforgeの下のオープンソースプロジェクトでもあり、このプロジェクトは丈夫で使いやすい接続プールを提供し、最も重要なのはこの接続プールが監視機能を提供し、使いやすく、接続漏れを発見しやすいことです.次はProxool接続プールのいくつかのテクノロジーの概要です.
Proxool接続プールを使用する方法公式に提供されているドキュメントには、Proxoolを使用する方法がいくつかあります.ここでは、プロファイルを使用する方法と、Proxoolを使用する方法の2つだけを紹介します.1つは、属性を直接設定することで使用します.Proxool接続プールのデータソースが使用されています.jdbc poolと同様にデータソースで構成されています
1、属性を直接設定する方法
Proxoolデータベース接続オブジェクトを返すツールクラスを作成します.
次に、テストコードを作成します.
テストの結果は、異なる5つの接続オブジェクトが返されていることがわかります.この方式を使用するメリットは簡単で直接的で、欠点はメンテナンスが容易ではなく、属性が変化するにはコードを修正する必要があることです.
2、プロファイルを使用するには、Proxool接続プールをプロファイルで使用する方法を見てみましょう.まず、proxool.xmlプロファイルを作成し、srcルートディレクトリの下にしばらく置く必要があります.ファイルの内容は次のとおりです.
上記のプロパティは、最初の方法で設定することもできます.その後、接続を取得する方法を記述する必要があります.コードは次のとおりです.
両者の違いに注意して、proxool.xmlというプロファイル(ストリームで)を読み込む必要があります.読み込んだ後、JAXPConfiguratorのconfigureメソッドを呼び出すとxmlファイルの解析が完了します.その後、クライアントがgetConnectionメソッドを直接呼び出すと、データベース接続プールから接続が取得されます.テストコードは次のとおりです.
テストは次のとおりです.
Proxoolデータベース接続プールの小結Proxoolデータベース接続プールを使用すると、データベース接続を管理し、サーバの応答性能を向上させることができます.jdbc poolデータベース接続プールとProxoolデータベース接続プールをまとめると、両方に一定の共通性があることがわかります.いずれもデータソースで接続を取得している点は、通常のjdbc操作とは大きく異なり、Drivermanagerクラスは使用後、リソースをタイムリーに解放することができず、再利用できません.一方、データベース接続プールは、データベース接続プールの作成、解放、破棄など、接続オブジェクトを管理します.
Proxoolは上記の2つの方法が一般的ですが、コンフィギュレーションファイルの使用は柔軟性が高く、コードのメンテナンスが容易で、この使用方法をお勧めします.
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つの方法が一般的ですが、コンフィギュレーションファイルの使用は柔軟性が高く、コードのメンテナンスが容易で、この使用方法をお勧めします.