2015-02-10 76 views
0

我想添加外部配置数据。所以我在主文件Config.groovy中增加了以下行。grails war tomcat with external config file

我导出的环境变量

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中的一些配置参数。 grails -Denv=DEV run-app:例如

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

当通过本地运行的应用程序。一切工作正常,实例AdminSettings被创建并用期望的值初始化。

当我在我的tomcat服务器上部署war文件时,intance AdminSettings没有被定义。然而,我没有出口环境变量

DASH_CONFIG=<path_to_external_configfile>/extConfig.properties. 

我的事件把extConfig.properties文件夹$TOMCAT_HOME/lib,它并没有正常工作。

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

我通过stackflow进行搜索,但没有找到正确的答案。

有没有人有想法?

回答

0

下面是我们什么作品:

在的conf/Config.groovy中:

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

它工作在Windows,但Groovy中/ Windows认为的地方是家庭(〜)可以是一个有点出人意料。您尝试从Config.groovy访问环境变量看起来有点冒险...

+0

或试试这个:http://phatness.com/2010/03/how-to-externalize-your-grails-configuration/ – CharlesW 2015-02-10 17:59:43

+0

感谢@CharlesW为您答复,但我已经测试过您的选择,它不工作... – viz 2015-02-11 23:56:41