- - PR -
コネクションプールを使用した接続
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-07-10 21:13
初めてスレッドを書かせていただきました。
質問内容の記述が不十分であればご指摘お願います。 アプリケーションサーバーにTOMCATを使用しています。 現在接続プールを使用する為に以下のコードで Connectionを取得しています。(server.xml)は記述済み [java] InitialContext ic = new InitialContext(); DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/MySQL"); Connection con = ds.getConnection(); 質問1: 上記のコードだとアプリケーションサーバー側でプールを作成するし、 ds.getConnection(); で使用できるConnectionを取得している?と考えていますが その際、使用後にcon.close()はしなければいけないのですか? (OracleでSession数を確認すると、どんどん増えていきました・・・) 質問2: Oracle接続時に必要なuserとpasswordを途中で切り替えたいと 考えておりますが、ds.getConnection(user,password); とするとエラーが発生し、server.xmlで登録していたuser,passwordに 接続しとしてしまいます。 切り替えたいとなると、 private Vector connectionPool = null; DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); if(connectionPool == null) { connectionPool = new Vector(); for(int i = 0;i<1;i++){ Connection connection = DriverManager.getConnection(conStr); connectionPool.add(connection); } } Connection return_connection = (Connection)connectionPool.get(0); connectionPool.remove(0); return_connection.setAutoCommit(false); return return_connection; のように自前でコネクションプールを作成する必要があるのでしょうか? |
|
投稿日時: 2005-07-10 21:30
質問1:
コネクションプールの実装によりますが、 大体のコネクションプールにて提供されたコネクションは、 closeメソッドで自分自身を、プールに返却する実装になっています。 ですので、返却を行わないと「使用中」と判断されます。 プールが空の状態なら新たにコネクションを作成する使用であれば、 セッションが増えるのも当然です。 アイドル状態の接続数や空の状態での新規接続数などは、設定にて行う事ができます。 質問2: コネクションプールとは、コネクションをある程度ためておく事を言います。 どのように接続をためるかというと、予め設定されたID/PASSWORDで接続を自動的に行い、 その接続をためておきます。なので、当然の動作だと思います。 接続方法を切り替えたいケースですが、ユーザ名が動的に変わるものなのでしょうか。 変わらないのであれば、データソースをユーザ単位で複数作成してもいいのではないでしょうか。 変わるようなら独自でコネクションプールを作成する必要があると思いますが、 Tomcatではコネクションプールの実装にCommonsDBCPが使用されています。 サーブレット側でもCommonsDBCPを使用して、独自にデータソースの取得も可能です。 コネクションプールをマジメに実装すると大変なので、 既に存在するプロダクトを利用するのがいいと思います。 |
|
投稿日時: 2005-07-10 22:05
かつのりさん、返信ありがとうございます。
>変わるようなら独自でコネクションプールを作成する必要があると思いますが、 >Tomcatではコネクションプールの実装にCommonsDBCPが使用されています。 >サーブレット側でもCommonsDBCPを使用して、独自にデータソースの取得も可能です。 >コネクションプールをマジメに実装すると大変なので、 >既に存在するプロダクトを利用するのがいいと思います。 ユーザは動的に変わるので作成する必要があるのですね。 ずっと悩んでいたので的確に解答をいただけて、本当に感謝しております。 これからCommonsDBCPについて調べてみます。 ありがとうございました。 |
|
投稿日時: 2005-07-10 23:18
関係ないですが、動的にDB接続のユーザが変わるというのは
一体どんなシステムなんでしょうか? 通常の業務システムでは考えにくいケースだと思いました。 興味があるので差し支えなければ教えていただけないでしょうか。 |
1