我们有一个grails应用程序,它具有存储在grails数据库中的各种域对象。该应用程序连接到第二个数据库,运行一些原始的SQL,并在一个表中显示结果。它基本上是一个报告服务器grails如何(重新)连接到第二个数据库
我们在DataSource.groovy中如指定数据源第二次向连接需第二DB:
dataSource_target {
dialect = org.hibernate.dialect.MySQLInnoDBDialect
pooled = true
jmxExport = true
driverClassName = "com.mysql.jdbc.Driver"
username = "bla"
password = "bla"
}
然后在控制器中,我们有
static mapping = {
datasource 'ALL'
}
然后在服务上,我们有:
con = new Sql(dataSource_target)
rows = con.rows(sql)
它的工作原理,但有两个大问题:
如果在执行grails run-app时,报告应用程序无法连接到第二个“目标”数据源,则无法启动。
一旦运行,如果应用程序失去与目标数据库的连接,它不会尝试重新连接,则必须再次停止并启动整个grails应用程序。
我们需要一些更强大的 - 目标当用户决定运行报告DB只叫 - 它不是当我们调用CON运行应用程序启动时,并应尝试连接(或重新连接)=新的Sql(数据源)。
任何想法我们如何实现这一目标? IE浏览器。一种在运行时连接到数据库的方式,拉回一些行,并且如果与目标数据库的连接丢失,然后重新建立,下次运行报告时它仍然可以工作。另外,如果应用程序在目标数据库不存在时启动,它仍应该启动,因为它在启动时不依赖于它。
感谢,