This article建議Tomcat 7應用程序應該使用JDBC連接池而不是commons-dbcp連接池。然而,後者是Grails應用程序的默認設置,並且不清楚如何更改它。配置Grails應用程序以使用JDBC連接池
我的猜測是我需要在resources.groovy
中定義一個覆蓋默認情況下通常創建的bean的bean,但我不知道應該命名這個bean或者需要設置哪些屬性。
This article建議Tomcat 7應用程序應該使用JDBC連接池而不是commons-dbcp連接池。然而,後者是Grails應用程序的默認設置,並且不清楚如何更改它。配置Grails應用程序以使用JDBC連接池
我的猜測是我需要在resources.groovy
中定義一個覆蓋默認情況下通常創建的bean的bean,但我不知道應該命名這個bean或者需要設置哪些屬性。
最簡單的做法可能是使用jdbc-pool插件。由於該池的配置選項有意與Commons DBCP非常相似(它們的文檔記錄爲here),因此您可以使用該插件來定義jar依賴項並管理爲您切換類。該插件一年內未更新,因此它有點過時(插件使用版本1.0.9.0,但是使用latest is 1.0.9.3),因此您可能需要定義不包括jar的插件依賴項,併爲新版本添加一個。它在回購協議中,所以您需要將其添加到您的BuildConfig.groovy中(請參閱plugin's version瞭解他是如何做到的)。
如果你要在不使用插件的配置這一點,回購和JAR依賴添加到BuildConfig.groovy
:
repositories {
inherits true
...
ebr()
}
dependencies {
runtime('org.apache.tomcat:com.springsource.org.apache.tomcat.jdbc:1.0.9.3') {
transitive = false
}
}
,並創建resources.groovy
爲dataSource
豆的覆蓋:
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
中設置驅動程序和連接信息。
在DataSource.groovy
我使用以下命令:
environments {
integration {
dataSource {
pooled = false
jndiName = "java:/comp/env/jdbc/myJndiName"
}
}
}
和其他一切由Tomcat的定義 - 這只是需要與之相匹配的。沒有必要定義任何dataSource bean resources.groovy
在開發模式下運行應用程序時不起作用 – 2012-03-04 21:11:49
啊,你的問題沒有提到開發模式。 – doelleri 2012-03-04 22:36:41
我希望我的開發環境儘可能與生產相似,以最大限度地減少潛在的驚喜 – 2012-03-05 10:41:42
我想我只是使用插件。我會做一個新版本,升級到最新版本的JDBC連接池庫。 – 2012-03-05 10:42:54