今までの例では、プログラム開始時に1つのデータベース接続を確立し、終了時に接続を閉じるというものです。 このような接続方法では、複数の要求を実行するWebアプリケーションのような場合に、データベースへの複数の同時アクセスが生じて利用できなくなります。 勿論、ページ要求毎に接続を確立して、要求が終わったら接続を閉じれば良いのですが、この方法では要求が増えるとデータベースの接続のためにかなりの時間を要することになります。 ここで接続プール(コネクションプール)の利用が考えられます。接続プールはデータベースへの接続は実際には閉じられず、キューに保存されて再利用されます。 これにより複数のページ要求を並行して処理できるようになり、マシンへの負荷が軽減されます。
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: }