如何将 Vaadin 7.3.9 集成到 Eclipse 中的 Grails 项目中?
How to integrate Vaadin 7.3.9 into a Grails project in Eclipse?
我在将 Vaadin 集成到 Eclipse 中的 Grails 项目时遇到了一些问题。
我正在使用 Spring Tool Suite(版本 3.6.3)和 Grails(版本 2.4.4)提供的 Eclipse(版本 4.4 Luna)。
我创建了一个 Grails 项目:
- 文件 -> 新建 -> Grails 项目
我正在看 Vaadin Cookbook 这本书,作者说要在 Grails 项目中使用 Vaadin,必须安装 Grails 的 Vaadin 插件。作者说应该:
- 打开 grails 控制台并输入:
grails> install-plugin vaadin
但是,自 Grails 2.4.3 起已弃用该插件,必须像这样将插件添加到 BuildConfig.groovy 文件中(基于该书合著者之一的教程 -> https://vaadin.com/wiki/-/wiki/Main/Vaadin%20on%20Grails%20-%20Create%20project%20in%20IntelliJ%20IDEA(链接中使用的是IntelliJIDEA URL 而不是Eclipse)):
// BuildConfig.groovy
// ...
grails.project.dependency.resolution = {
//...
plugins {
//...
compile ":vaadin:7.3.9"
//...
}
}
但是,我该怎么办?在书中他们说 grails-app/vaadin
文件夹必须标记为源文件夹 (Build Path -> Use as source folder
),但在我的 Grails 项目中没有这样的文件夹。
此外,从上面链接的 InlliJIDEA 教程中,作者说:
现在我尝试编辑 UrlMappings.groovy 文件以删除所有映射:
class UrlMappings {
static mappings = {
}
}
然后当我 运行 run-app
命令时,我得到以下异常:
|Running Grails application
objc[42370]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
| Error 2015-01-30 11:33:56,213 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener - Error initializing the application: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
Message: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
Line | Method
->> 266 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
->> 266 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
->> 266 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by IntegrationException: Error activating Bean Validation integration
->> 266 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by NoClassDefFoundError: javax/validation/ParameterNameProvider
->> 760 | defineClass in java.lang.ClassLoader
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 142 | defineClass in java.security.SecureClassLoader
| 455 | defineClass in java.net.URLClassLoader
| 73 | access0 in ''
| 367 | run . . . in java.net.URLClassLoader
| 361 | run in ''
| 360 | findClass in java.net.URLClassLoader
| 424 | loadClass in java.lang.ClassLoader
| 269 | configure in javax.validation.Validation$GenericBootstrapImpl
| 111 | buildDefaultValidatorFactory in javax.validation.Validation
| 266 | run . . . in java.util.concurrent.FutureTask
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by ClassNotFoundException: javax.validation.ParameterNameProvider
->> 372 | run in java.net.URLClassLoader
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 361 | run in ''
| 360 | findClass in java.net.URLClassLoader
| 424 | loadClass in java.lang.ClassLoader
| 760 | defineClass in ''
| 142 | defineClass in java.security.SecureClassLoader
| 455 | defineClass in java.net.URLClassLoader
| 73 | access0 in ''
| 367 | run . . . in java.net.URLClassLoader
| 361 | run in ''
| 360 | findClass in java.net.URLClassLoader
| 424 | loadClass in java.lang.ClassLoader
| 269 | configure in javax.validation.Validation$GenericBootstrapImpl
| 111 | buildDefaultValidatorFactory in javax.validation.Validation
| 266 | run . . . in java.util.concurrent.FutureTask
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Error |
Forked Grails VM exited with error
|Server running. Browse to http://localhost:8080/vaadin-in-grails
它最后说 "Server running" 但它不是真的,并且没有根据需要创建 grails-app/vaadin
文件夹。
我没有找到涵盖该主题的任何其他教程(具体来说,我正在搜索我链接的 IntelliJIDEA 教程的 Eclipse 版本,但没有找到)。
因此,据我所知,我正在阅读的这本书涵盖了旧版本的 Grails,其中插件是通过 install-plugin
已弃用的命令安装的,我无法使用它,因为我曾尝试使用compile ":vaadin:7.3.9"
指令没有成功,我在这里问 SO 的人。
如何解决此问题并开始使用 Grails/Vaadin 进行编程?
不要使用安装插件的方法。
将其放在 BuildConfig.groovy 的插件部分:
compile ":vaadin:7.4.1"
据我从插件作者那里了解到,较新版本的 Vaadin/Grails 插件不再创建 grails-app/vaadin 目录。相反,您现在需要将 vaadin 代码放在典型的 src/groovy 或 src/java 文件夹中。
兄弟,我遇到了同样的问题,但是在阅读了很多关于 Grails 的 Vaadin 这本书并进行了大量试验之后,我找到了解决方案,重要的是要提到我的 grails 项目正在使用这个配置,没有重大变化版本所以我相信它应该工作:
- Grails 2.4.5
- Vaadin 7.4.8,比较新,
- 用于数据库的 Oracle Express(这是不可知的)
从您的日志跟踪中,我看到了这一行:
Caused by ClassNotFoundException: javax.validation.ParameterNameProvider
好的,首先,转到您的 BuildConfig.groovy 并设置以下值:
//BuildConfig.groovy
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
// runtime 'mysql:mysql-connector-java:5.1.29'
// runtime 'org.postgresql:postgresql:9.3-1101-jdbc41'
compile 'javax.validation:validation-api:1.1.0.Final'
test "org.grails:grails-datastore-test-support:1.0.2-grails-2.4"
}
plugins {
// plugins for the build system only
build ":tomcat:7.0.55.2" // or ":tomcat:8.0.20"
// plugins for the compile step
//compile ":scaffolding:2.1.2"
compile ':cache:1.1.8'
compile ":asset-pipeline:2.1.5"
compile ":vaadin:7.4.8"
// plugins needed at runtime but not for compilation
runtime ":hibernate4:4.3.6.1"
runtime ":database-migration:1.4.0"
//runtime ":jquery:1.11.1"
}
从上面的代码中需要注意两点:
- 插件部分正在使用 hibernate4:4.3.6.1
- 在 Dependencies 部分,我添加了以下行,从我的许多阅读中有人提到,由于从 Hibernate3 到 Hibernate4 的变化,为了满足一些标准,规范中有一些变化(这里是 javax.validation API 已弃用),所以这是解决您问题的行:
编译 'javax.validation:validation-api:1.1.0.Final'
现在在你的文件 DataSource.groovy 中,注意以下几点:
1. 你还记得我把项目设置为使用Hibernate4,所以应该做适当的配置。
//DataSource.groovy
dataSource {
pooled = true
jmxExport = true
username = "db_user"
password = "db_password"
dialect = org.hibernate.dialect.Oracle10gDialect
driverClassName = 'oracle.jdbc.OracleDriver'
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
// cache.region.factory_class = 'org.hibernate.cache.SingletonEhCacheRegionFactory' // Hibernate 3
cache.region.factory_class = 'org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory' // Hibernate 4
singleSession = true // configure OSIV singleSession mode
flush.mode = 'manual' // OSIV session flush mode outside of transactional context
jdbc.use_get_generated_keys = true
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
//url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
url = "jdbc:oracle:thin:@localhost:1521:xe"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:oracle:thin:@localhost:1521:xe"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:oracle:thin:@localhost:1521:xe"
properties {
// See http://grails.org/doc/latest/guide/conf.html#dataSource for documentation
jmxEnabled = true
initialSize = 5
maxActive = 50
minIdle = 5
maxIdle = 25
maxWait = 10000
maxAge = 10 * 60000
timeBetweenEvictionRunsMillis = 5000
minEvictableIdleTimeMillis = 60000
validationQuery = "SELECT 1"
validationQueryTimeout = 3
validationInterval = 15000
testOnBorrow = true
testWhileIdle = true
testOnReturn = false
jdbcInterceptors = "ConnectionState"
defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED
}
}
}
}
在休眠部分中,您必须设置以下值:
cache.region.factory_class
在我的例子中,我使用的是 Hibernate4,因此您应该使用相同的值。
来源:
查看此项目:https://github.com/vaadin-on-grails/sass-compilation 并且不要忘记购买 Vaadin on Grails 这本书,它有很多相关信息。
我在将 Vaadin 集成到 Eclipse 中的 Grails 项目时遇到了一些问题。
我正在使用 Spring Tool Suite(版本 3.6.3)和 Grails(版本 2.4.4)提供的 Eclipse(版本 4.4 Luna)。
我创建了一个 Grails 项目:
- 文件 -> 新建 -> Grails 项目
我正在看 Vaadin Cookbook 这本书,作者说要在 Grails 项目中使用 Vaadin,必须安装 Grails 的 Vaadin 插件。作者说应该:
- 打开 grails 控制台并输入:
grails> install-plugin vaadin
但是,自 Grails 2.4.3 起已弃用该插件,必须像这样将插件添加到 BuildConfig.groovy 文件中(基于该书合著者之一的教程 -> https://vaadin.com/wiki/-/wiki/Main/Vaadin%20on%20Grails%20-%20Create%20project%20in%20IntelliJ%20IDEA(链接中使用的是IntelliJIDEA URL 而不是Eclipse)):
// BuildConfig.groovy
// ...
grails.project.dependency.resolution = {
//...
plugins {
//...
compile ":vaadin:7.3.9"
//...
}
}
但是,我该怎么办?在书中他们说 grails-app/vaadin
文件夹必须标记为源文件夹 (Build Path -> Use as source folder
),但在我的 Grails 项目中没有这样的文件夹。
此外,从上面链接的 InlliJIDEA 教程中,作者说:
现在我尝试编辑 UrlMappings.groovy 文件以删除所有映射:
class UrlMappings {
static mappings = {
}
}
然后当我 运行 run-app
命令时,我得到以下异常:
|Running Grails application
objc[42370]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
| Error 2015-01-30 11:33:56,213 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener - Error initializing the application: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
Message: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
Line | Method
->> 266 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
->> 266 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
->> 266 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by IntegrationException: Error activating Bean Validation integration
->> 266 | run in java.util.concurrent.FutureTask
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by NoClassDefFoundError: javax/validation/ParameterNameProvider
->> 760 | defineClass in java.lang.ClassLoader
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 142 | defineClass in java.security.SecureClassLoader
| 455 | defineClass in java.net.URLClassLoader
| 73 | access0 in ''
| 367 | run . . . in java.net.URLClassLoader
| 361 | run in ''
| 360 | findClass in java.net.URLClassLoader
| 424 | loadClass in java.lang.ClassLoader
| 269 | configure in javax.validation.Validation$GenericBootstrapImpl
| 111 | buildDefaultValidatorFactory in javax.validation.Validation
| 266 | run . . . in java.util.concurrent.FutureTask
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Caused by ClassNotFoundException: javax.validation.ParameterNameProvider
->> 372 | run in java.net.URLClassLoader
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 361 | run in ''
| 360 | findClass in java.net.URLClassLoader
| 424 | loadClass in java.lang.ClassLoader
| 760 | defineClass in ''
| 142 | defineClass in java.security.SecureClassLoader
| 455 | defineClass in java.net.URLClassLoader
| 73 | access0 in ''
| 367 | run . . . in java.net.URLClassLoader
| 361 | run in ''
| 360 | findClass in java.net.URLClassLoader
| 424 | loadClass in java.lang.ClassLoader
| 269 | configure in javax.validation.Validation$GenericBootstrapImpl
| 111 | buildDefaultValidatorFactory in javax.validation.Validation
| 266 | run . . . in java.util.concurrent.FutureTask
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run in java.lang.Thread
Error |
Forked Grails VM exited with error
|Server running. Browse to http://localhost:8080/vaadin-in-grails
它最后说 "Server running" 但它不是真的,并且没有根据需要创建 grails-app/vaadin
文件夹。
我没有找到涵盖该主题的任何其他教程(具体来说,我正在搜索我链接的 IntelliJIDEA 教程的 Eclipse 版本,但没有找到)。
因此,据我所知,我正在阅读的这本书涵盖了旧版本的 Grails,其中插件是通过 install-plugin
已弃用的命令安装的,我无法使用它,因为我曾尝试使用compile ":vaadin:7.3.9"
指令没有成功,我在这里问 SO 的人。
如何解决此问题并开始使用 Grails/Vaadin 进行编程?
不要使用安装插件的方法。
将其放在 BuildConfig.groovy 的插件部分:
compile ":vaadin:7.4.1"
据我从插件作者那里了解到,较新版本的 Vaadin/Grails 插件不再创建 grails-app/vaadin 目录。相反,您现在需要将 vaadin 代码放在典型的 src/groovy 或 src/java 文件夹中。
兄弟,我遇到了同样的问题,但是在阅读了很多关于 Grails 的 Vaadin 这本书并进行了大量试验之后,我找到了解决方案,重要的是要提到我的 grails 项目正在使用这个配置,没有重大变化版本所以我相信它应该工作:
- Grails 2.4.5
- Vaadin 7.4.8,比较新,
- 用于数据库的 Oracle Express(这是不可知的)
从您的日志跟踪中,我看到了这一行:
Caused by ClassNotFoundException: javax.validation.ParameterNameProvider
好的,首先,转到您的 BuildConfig.groovy 并设置以下值:
//BuildConfig.groovy
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
// runtime 'mysql:mysql-connector-java:5.1.29'
// runtime 'org.postgresql:postgresql:9.3-1101-jdbc41'
compile 'javax.validation:validation-api:1.1.0.Final'
test "org.grails:grails-datastore-test-support:1.0.2-grails-2.4"
}
plugins {
// plugins for the build system only
build ":tomcat:7.0.55.2" // or ":tomcat:8.0.20"
// plugins for the compile step
//compile ":scaffolding:2.1.2"
compile ':cache:1.1.8'
compile ":asset-pipeline:2.1.5"
compile ":vaadin:7.4.8"
// plugins needed at runtime but not for compilation
runtime ":hibernate4:4.3.6.1"
runtime ":database-migration:1.4.0"
//runtime ":jquery:1.11.1"
}
从上面的代码中需要注意两点:
- 插件部分正在使用 hibernate4:4.3.6.1
- 在 Dependencies 部分,我添加了以下行,从我的许多阅读中有人提到,由于从 Hibernate3 到 Hibernate4 的变化,为了满足一些标准,规范中有一些变化(这里是 javax.validation API 已弃用),所以这是解决您问题的行: 编译 'javax.validation:validation-api:1.1.0.Final'
现在在你的文件 DataSource.groovy 中,注意以下几点: 1. 你还记得我把项目设置为使用Hibernate4,所以应该做适当的配置。
//DataSource.groovy
dataSource {
pooled = true
jmxExport = true
username = "db_user"
password = "db_password"
dialect = org.hibernate.dialect.Oracle10gDialect
driverClassName = 'oracle.jdbc.OracleDriver'
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
// cache.region.factory_class = 'org.hibernate.cache.SingletonEhCacheRegionFactory' // Hibernate 3
cache.region.factory_class = 'org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory' // Hibernate 4
singleSession = true // configure OSIV singleSession mode
flush.mode = 'manual' // OSIV session flush mode outside of transactional context
jdbc.use_get_generated_keys = true
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
//url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
url = "jdbc:oracle:thin:@localhost:1521:xe"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:oracle:thin:@localhost:1521:xe"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:oracle:thin:@localhost:1521:xe"
properties {
// See http://grails.org/doc/latest/guide/conf.html#dataSource for documentation
jmxEnabled = true
initialSize = 5
maxActive = 50
minIdle = 5
maxIdle = 25
maxWait = 10000
maxAge = 10 * 60000
timeBetweenEvictionRunsMillis = 5000
minEvictableIdleTimeMillis = 60000
validationQuery = "SELECT 1"
validationQueryTimeout = 3
validationInterval = 15000
testOnBorrow = true
testWhileIdle = true
testOnReturn = false
jdbcInterceptors = "ConnectionState"
defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED
}
}
}
}
在休眠部分中,您必须设置以下值:
cache.region.factory_class
在我的例子中,我使用的是 Hibernate4,因此您应该使用相同的值。
来源: 查看此项目:https://github.com/vaadin-on-grails/sass-compilation 并且不要忘记购买 Vaadin on Grails 这本书,它有很多相关信息。