LoginSignup
18
11

More than 5 years have passed since last update.

Spring + Tomcatでのdatasourceの設定

Last updated at Posted at 2016-01-25

きっかけ

Spring + Tomcatでの開発のときに、DBの接続エラーではまったので、そのときの設定メモ。
java6縛りでtomcatも古いバージョンの設定ですので、気を付けてください。

ポイントはvalidationQueryです。

コネクションの有効性テスト

一定時間たつとDBに接続できなくなったときは、プールしているコネクションがつかえなくなってる可能性が高いです。
こちら で同じ問題の解決策にでていました。

validationQueryの設定を追加で解消されます。Spring側でdatasourceを定義するなら、下記のようにします。
(RDBMSがMySQLの想定ですが、OracleDBでも同様です。)

applicationContext.xml

applicationContext.xml

<bean id="dataSource"
          class="org.apache.tomcat.jdbc.pool.DataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/sample"/>
        <property name="username" value="root" />
        <property name="password" value="root" />
        <property name="validationQuery" value="SELECT 1 FROM DUAL" />
        <property name="testOnBorrow" value="true" />
        <property name="testWhileIdle" value="true" />
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
    </bean>

server.xml

Tomcat側で接続するDBを指定している場合は、server.xmlに上記の設定を追加します。

https://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html
http://ymotoba.blogspot.jp/2008/09/tomcat.html

server.xml
<Resource name="jdbc/sample"
      global="jdbc/sample"
      auth="Container"
      type="javax.sql.DataSource"
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost:3306/sample"
      username="root"
      password="root"       
      maxActive="100"
      maxIdle="20"
      minIdle="5"
      maxWait="10000"
      validationQuery="SELECT 1 FROM DUAL"
      testOnBorrow="true"
    testWhileIdle="true"
      timeBetweenEvictionRunsMillis="60000"   
 />

applicationContext.xmlにはJNDIの設定に書き直します。

applicationContext.xml

 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/jdbc/sample"/>
 </bean>

参考サイト

18
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
11