- - PR -
コネクションプーリングについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-01-09 00:21
環境はJ2SE1.4.1 Tomcat4.1.3 Oracle9iです。
コネクションプーリングについてなのですが driverManager接続した場合は、Class.forNameに何を指定しようが コネクションプーリングはされないのでしょうか? また、DataSourceを使用した場合は 無条件にコネクションプーリングされるのでしょうか? それとも server.xmlのResourceParamsのfactoryに oracle.jdbc.pool.OracleDataSourceFactoryを指定した場合に コネクションプーリングされるのでしょうか? |
|
投稿日時: 2005-01-09 03:59
まず、試してみましょう。
コネクションをクローズしても netstat -an で 1521 とかに接続があればプールされてると判断できるでしょう。 |
|
投稿日時: 2005-01-11 21:15
netstat -an をやってみたのですが
接続しているとき(Tomcat起動中)と、Tomcat非起動中で同じ結果でした。 (かつnetstatの結果の見方がよくわからない) DataSource接続中 TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING TCP 自分のPCのアドレス:1086 自分のPCのアドレス:1521 ESTABLISHED TCP 自分のPCのアドレス:1521 自分のPCのアドレス:1086 ESTABLISHED なにもしていない時 TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING TCP 自分のPCのアドレス:1086 自分のPCのアドレス:1521 ESTABLISHED TCP 自分のPCのアドレス:1521 自分のPCのアドレス:1086 ESTABLISHED この他にOracleへのコネクションが確立しているかどうかを 調べる方法はないでしょうか? |
|
投稿日時: 2005-01-11 22:51
ディクショナリを見られる権限のあるユーザでOracleに接続して
SELECT * FROM V$SESSION を発行すれば、Oracleに接続されているかどうかわかりますよ。 |
|
投稿日時: 2005-01-13 13:45
vincentさん、ありがとうございます。
SELECT * FROM V$SESSION で、接続を確認することができました。 しかし、DataSourceで接続しても getConnectionすると接続が1つ増えcloseすると接続が1つ消えました。 これってどうやらコネクションプーリングされていないようです。 以下のような設定でコネクションプーリングをしているつもりですが 何かおかしな設定をしていますでしょうか。 web.xml <resource-ref> <res-ref-name>jdbc/DataSource</res-ref-name> <res-type>oracle.jdbc.pool.OracleDataSource</res-type> <res-auth>Container</res-auth> </resource-ref> server.xml <Context〜略> <Resource name="jdbc/DataSource" auth="Container" type="oracle.jdbc.pool.OracleDataSource"/> <ResourceParams name="jdbc/DataSource"> <parameter> <name>factory</name> <value>oracle.jdbc.pool.OracleDataSourceFactory</value> </parameter> <parameter> <name>maxWait</name> <value>10000</value> </parameter> <parameter> <name>maxActive</name> <value>10</value> </parameter> <parameter> <name>url</name> <value>jdbc:oracle:thin:ユーザ名/パスワード@localhost:1521:SID</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value> </parameter> <parameter> <name>maxIdle</name> <value>5</value> </parameter> </ResourceParams> </Context> |
|
投稿日時: 2005-01-13 19:08
JDBCドライバのバージョンが分かりませんが、例えば
OracleDataSourceではなくてOracleConnectionPoolDataSource を使うべきであったりしませんか? |
|
投稿日時: 2005-01-18 17:55
OracleConnectionPoolDataSourceを使用してみたのですが
状況は変わりませんでした。 ところで、私すごく勘違いかもしれないのですが これらの設定を行えば、かってにコネクションを確保してくれると 思っているのですが間違いでしょうか? コネクションを管理するクラスが別に必要でしょうか? |
|
投稿日時: 2005-06-13 08:57
当方も同じような環境
(環境はJ2SE1.4.1 Tomcat4.1.3 Oracle9i) で factoryにoracle.jdbc.pool.OracleDataSourceFactory を指定し、 OracleConnectionPoolDataSource を使用してもプーリングされませんでしが、 OracleConnectionPoolDataSource ではなく OracleConnectionCacheImpl を使用したらプーリングされたような動作をしています。 OracleConnectionCacheImpl を使うのには何か問題ありますでしょうか? |
1