grails war tomcat with external config file

时间:2015-02-10 17:24:20

标签: tomcat grails tomcat7 war

我想添加外部配置数据。所以我在主Config.groovy文件中添加了以下行。

我导出了环境变量

DASH_CONFIG=<path_to_external_configfile>/extConfig.properties
  • extConfig.properties

    simpleBSMDash.default.serverName = "test.it.com"
    simpleBSMDash.default.refreshInterval = "5"
    
  • Config.groovy中

    if(System.getenv('DASH_CONFIG')) {
        println( "Including configuration file: " + System.getenv('DASH_CONFIG'));
        grails.config.locations = [ 
            "classpath:exthConfig.properties",
            "file:./extConfig.properties",
            "file:${System.getenv('DASH_CONFIG')}"]
    } else {
        println "No external configuration file defined."
    }
    
  • BootStrap.groovy中

    我在Boostrap.groovy中初始化了一些配置参数。例如

    import org.codehaus.groovy.grails.commons.ConfigurationHolder
    
    
    new AdminSettings(
        refreshInterval:"${ConfigurationHolder.config.simpleBSMDash.default.refreshInterval}", serverName:"${ConfigurationHolder.config.simpleBSMDash.default.serverName}").save(failOnError:true)
    

通过以下方式在本地运行应用:grails -Denv=DEV run-app。一切正常,我们会创建intance AdminSettings并使用预期值进行初始化。

当我在tomcat服务器上部署war文件时,intance AdminSettings没有被实例化。然而我做了导出环境变量

DASH_CONFIG=<path_to_external_configfile>/extConfig.properties.

我将extConfig.properties文件放在$TOMCAT_HOME/lib文件夹中,但它也没有用。

我将其重命名为extConfig.groovy,它也没有帮助。

我搜索了stackflow,但没有找到正确的答案。

有没有人有想法?

1 个答案:

答案 0 :(得分:0)

这对我们有用:

在conf / Config.groovy中:

grails.config.locations = [ 
  "classpath:${appName}.properties", 
  "file:${userHome}/.grails/${appName}-config.properties"
  ]

它适用于Windows,虽然Groovy / Windows认为是家(〜)的地方可能有点令人惊讶。您尝试从Config.groovy访问环境变量看起来有点冒险......