【发布时间】:2016-04-15 01:51:16
【问题描述】:
所以使用 grails run-app VS war 文件。
我的期望是生成一个war文件并将其放入Tomcat中我所要做的就是输入war
下面的代码在 RUN-APP 控制台上运行良好。代码被精简到不工作的地方。
package foo
import groovy.sql.Sql;
class FooAlertJob {
static triggers = {
simple name: 'mySimpleTrigger', startDelay:5000, repeatInterval: 1000*10l
}
def dataSourceFoo
def execute() {
def sql = new Sql (dataSourceFoo)
}
}
当使用 tomcat 和从 grails 构建的 war 文件运行时,我得到了(粘贴在下面)
由于以下之间的原型重叠,无法解析为 [null] 调用哪个方法: [接口 javax.sql.DataSource] [接口java.sql.Connection]]
四处搜索我没有找到解决方案,所以也许我只是很密集。
我必须对我的 groovy 做些什么,这样当我生成一个 war 文件时我就不必担心重新测试它了?
我已经尝试了将 sql 完全限定为 groovy.sql.SQL 的明显做法,但我没有明确的示例来说明从 run-app 到 war 文件的工作代码。
同样令人沮丧的是 groovy / grails 文档甚至没有提到它,所以我想知道我是否只是不了解这里的基础知识。我很清楚运行时 groovy VS 编译时间,但您仍然会认为,如果您生成了一个 war 文件,那么您从 grails 文档中复制/粘贴的示例将起作用。
Java 1.8 圣杯 2.5.3 Groovy 2.4.5
[interface java.sql.Connection] [参见嵌套异常:groovy.lang.GroovyRuntimeException:方法 groovy.sql.Sql# 的模糊方法重载。 由于以下之间的原型重叠,无法解析为 [null] 调用哪个方法: [接口 javax.sql.DataSource] [接口java.sql.Connection]]
【问题讨论】:
-
datasourceFoo为空 -
不,它不为空。这是一个 grails 应用程序。它在 DataSource.groovy 中定义,其工作方式与您在运行命令 run-app 的 grails 控制台中看到的一样
-
是的,它是空的。这就是错误所说的
-
请出示您的 DataSource.groovy。
-
dataSourceFoo { loggingSql = true username = "reader" password = "reader1" readOnly = TRUE url = "jdbc:sqlserver://localhost:1433;databaseName=Reports" driverClassName = "com.microsoft. sqlserver.jdbc.SQLServerDriver" dialect = "org.hibernate.dialect.SQLServerDialect" }
标签: sql grails groovy datasource