JDBC
JDBC
Java2 SE 5.0 API
Java2 SE 1.4 API
Java2 EE API
Struts 1.0.2
MSDN2 Library
MySQL 5.1
MySQL 4.1
HTMLリファレンス
CSSリファレンス
JavaScript
基本カラーチャート
カレンダー
 最新PG・講座情報
 最新ニュース
 電子辞書・辞典
ご意見・ご要望はこちらまで

連載

JDBC

接続プール管理


1.接続プールとは

 今までの例では、プログラム開始時に1つのデータベース接続を確立し、終了時に接続を閉じるというものです。 このような接続方法では、複数の要求を実行するWebアプリケーションのような場合に、データベースへの複数の同時アクセスが生じて利用できなくなります。
 勿論、ページ要求毎に接続を確立して、要求が終わったら接続を閉じれば良いのですが、この方法では要求が増えるとデータベースの接続のためにかなりの時間を要することになります。

 ここで接続プール(コネクションプール)の利用が考えられます。接続プールはデータベースへの接続は実際には閉じられず、キューに保存されて再利用されます。 これにより複数のページ要求を並行して処理できるようになり、マシンへの負荷が軽減されます。

接続プール
 

2.接続の例

 JDBCではデータベースの接続管理はJNDI(Java Naming and Directory Interface) により統合され、 今までの DriverManager は使用せず、JNDIサービスがデータソースの位置を特定します。
 注)今までの接続例はDB接続の基本コーディングを参照して下さい。
 注)JNDI名の登録はサーバ管理コンソールを参照して下さい。
 注)Struts での接続例はStruts によるユーザ認証(DataSource の設定)を参照して下さい。


 
 1: import java.sql.*;
 2: import javax.naming.Context;
 3: import javax.naming.InitialContext;
 4: import javax.naming.NamingException;
 5: import javax.sql.DataSource;
 6:
           ・・・

 7:        Connection conn = null;
 8:        try {
 9:            // Connectionを取得する処理
10:            Context ctx = new InitialContext();
11:            DataSource ds =
                   (DataSource) ctx.lookup("java:comp/env/xxxxxxxx");
12:            conn = ds.getConnection();

           ・・・

13:        } catch (NamingException e) {
14:            e.printStackTrace();
15:        } catch (SQLException e) {
16:            e.printStackTrace();
17:        } finally {
18:            if (conn != null) conn.close();
19:        }
 接続の例
 10行目 :初期コンテキストを構築する。
 11行目 :指定されたオブジェクトを取得する。
       ここでのオブジェクト名(xxxxxxxx)はTomcatの設定したDB接続情報(JNDI名)。
 12行目 :このデータソースへの接続の確立を試す。(接続するとは限りません。)
 18行目 :接続を使い終わったことを接続プールに通知する。


Top
Copyright© 2003-2007 FumikiChan All Rights Reserved.
http://www.fumikichan.net/