- PR -

tomcatの指定で、Oracleの暗黙的接続キャッシュを有効にする方法

1
投稿者投稿内容
finch
常連さん
会議室デビュー日: 2006/09/29
投稿数: 26
投稿日時: 2008-07-16 10:06
 tomcat5.5のDB接続プールで、Oracleの暗黙的接続キャッシュ(※)を有効にする方法に関して、質問させて頂きます。

※:http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/concache.htm

 spring−iBATISを経由して、Oracleをアクセスしますが、BLOB型を使用するため、server.xmlにおいて、以下のようなResourceの指定をしております。


<Resource auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver"
factory="oracle.jdbc.pool.OracleDataSourceFactory"
MaxLimit="2"
maxIdle="2"
maxWait="-1"
name="TerasolunaDataSourceG"
password="pass"
type="oracle.jdbc.pool.OracleDataSource"
url="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:XE"
user="user"/>

 それで、Oracleの暗黙的接続キャッシュを有効にするためには、OracleDataSourceでsetConnectionCachingEnabled(true)をコールする必要があるのですが、springでは、これがコールされていないようで、DBコネクションがプールされていません。

 これは、ServletContextListenerを作成して、データソースをlookup後、OracleDataSource.setConnectionCachingEnabled(true)をコールする事で、Oracleの暗黙的接続キャッシュを有効にできました。

 しかし、データソースはtomcat全体のものですので、Webアプリのlistenerで暗黙的接続キャッシを有効にするのは、ちょっと違和感を感じております。

 ですので、tomcat5.5の指定により、Oracleの暗黙的接続キャッシュを有効にできないかを伺いたく、投稿させて頂きました。よろしくお願い致します。

 なお、MaxLimit,maxIdle,maxWaitの指定についても、web.xmlのResource要素の指定が効いておらず、ServletContextListenerで設定できるのは、同様で、やはり、tomcat5.5の指定で有効にできないかと、考えております。

1

スキルアップ/キャリアアップ(JOB@IT)