настроить приложение Grails для использования пула соединений JDBC - PullRequest
9 голосов
/ 04 марта 2012

В этой статье предполагается, что приложения Tomcat 7 должны использовать пул соединений JDBC вместо пула соединений commons-dbcp. Однако последний вариант используется по умолчанию для приложения Grails, и неясно, как его изменить.

Я предполагаю, что мне нужно определить bean-компонент Spring в resources.groovy, который переопределяет bean-компонент, который обычно создается по умолчанию, но я понятия не имею, как должен называться этот bean-компонент или какие свойства мне нужно установить.

Ответы [ 2 ]

12 голосов
/ 04 марта 2012

Возможно, проще всего было бы использовать плагин jdbc-pool . Поскольку параметры конфигурации для этого пула намеренно очень похожи на Commons DBCP (они задокументированы здесь ), вы можете использовать плагин для определения зависимости jar и управления переключением класса для вас. Плагин не обновлялся в течение года, поэтому он немного устарел (плагин использует версию 1.0.9.0, но самая последняя версия - 1.0.9.3 ), поэтому вы можете определить зависимость плагина, исключая банку, и добавьте один для более новой версии. Он находится в репозитории ebr, поэтому вам необходимо добавить его в свой BuildConfig.groovy (информацию о том, как он это сделал, см. В версии плагина ).

Здесь есть примечания по конфигурации для пула здесь и серия постов автора здесь .

Если вы хотите настроить это без использования плагина, добавьте репозиторий ebr и зависимость jar к BuildConfig.groovy:

repositories {
   inherits true
   ...
   ebr()
}

dependencies {
   runtime('org.apache.tomcat:com.springsource.org.apache.tomcat.jdbc:1.0.9.3') {
      transitive = false
   }
}

и создайте переопределение для компонента dataSource в resources.groovy:

import org.apache.tomcat.jdbc.pool.DataSource

beans = {

   dataSource(DataSource) {
      // mandatory
      driverClassName = '${dataSource.driverClassName}'
      username = '${dataSource.username}'
      password = '${dataSource.password}'
      url = '${dataSource.url}'
      // optional
      minEvictableIdleTimeMillis=1800000
      timeBetweenEvictionRunsMillis=1800000
      numTestsPerEvictionRun=3
      testOnBorrow=true
      testWhileIdle=true
      testOnReturn=true
      validationQuery="SELECT 1"
   }
}

Удобно использовать строки в одинарных кавычках с ${} заполнителями, чтобы воспользоваться функциональностью заполнителей свойств Spring и сохранять вещи СУХИМЫМИ, поскольку вы уже установили драйвер и подключили информацию в DataSource.groovy.

3 голосов
/ 04 марта 2012

В DataSource.groovy Я использую следующее:

environments {
    integration {
        dataSource {
            pooled = false
            jndiName = "java:/comp/env/jdbc/myJndiName"
        }
    }
 }

И все остальное определяется Tomcat - это просто должно соответствовать.Нет необходимости определять какой-либо компонент источника данных в resources.groovy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...