当我第一次将它部署到我的生产tomcat服务器时,Grails似乎正在尝试访问我的数据库。我知道这是因为我在stacktrace.log中收到以下错误消息
invalid username/password; login denied
现在,我禁用了数据库创建
dataSource {
pooled = false
driverClassName = "oracle.jdbc.OracleDriver"
dialect = org.hibernate.dialect.Oracle10gDialect
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
//Set jdbc metadata to false to not open a session
temp.use_jdbc_metadata_defaults = false
}
production {
dataSource {
dbCreate = "none"
url = "jdbc:oracle:thin:@1.1.1.1:1521:xe"
}
}
我不提供数据库密码,因为我们使用数据库用户进行身份验证和授权(请不要批评这个决定,我知道这很糟糕,但我们有一个遗留数据库)。因此,当用户通过客户端发出请求时,会提供用户名/密码。我们使用http://sergiosmind.wordpress.com/2013/03/14/grails-using-a-database-user-for-security-login/进行设置。
似乎Grails应用无法启动,因此。为什么Grails访问数据库?它想做什么?
答案 0 :(得分:2)
Grails在启动时使用连接来初始化GORM - 有一个用于检测方言,一个用于配置LOB处理程序,而Hibernate连接用于初始化其配置。
我在这两篇博文中讨论了这个问题:http://burtbeckwith.com/blog/?p=312和http://burtbeckwith.com/blog/?p=1565