如何访问保存在WEB-INF文件夹中的配置文件

时间:2013-10-04 09:18:57

标签: tomcat groovy config

我是groovy的新手。并寻找一种方法在一个地方存储常见的配置,以便我的应用程序可以访问它。

我在WEB-INF中保留了常规应用程序的配置,如何从主应用程序访问该文件?

我尝试了这个ConfigSlurper().parse(new File("config.groovy").toURL()),但无法使其正常工作,因为tomcat期望config.groovy的路径是安装tomcat的地方。我将appBase配置到其他位置。

如何提供new File('')的相对路径以便它可以读取配置文件?

5 个答案:

答案 0 :(得分:2)

您希望使用ClassLoader而不是文件系统直接执行此操作。基本上,不要使用File。我不确定如何在Groovy中执行此操作,但在普通的Java中它看起来像这样:

URL config = request.getServletContext().getResource("/WEB-INF/config.groovy");

...然后用URL做任何你想做的事。 (仅供参考getResource方法使用webapp的ClassLoader)。所以,也许在Groovy中可能是:

ConfigSlurper().parse(request.ServletContext.getResource("/WEB-INF/config.groovy"))

抱歉,我不能给你准确的Groovy语法......不是我的世界。 :)

答案 1 :(得分:1)

如果您的配置必须在部署时设置,您可以将文件放入战争中并使用classloader访问它们。

例如,在标准的maven项目中,将配置文件放在src / main / resources / config /目录(file1.config,file2.config等)中。 然后在你的java代码中添加以下内容

public class MyConfigLoader {

   void loadConfigFile(String configFileName) {
      InputStream is = MyConfigLoader.class.getClassLoader().getResourceAsStream("config/"+configFileName);
      ...
   }
}

答案 2 :(得分:1)

对我而言,每次都有效

  

在BoosStrap,Controllers,TagLibs和。中注入'grailsApplication'   服务:

def grailsApplication
  

将您的文件放在/ web-app / WEB-INF / resources中并使用此行   用于检索资源目录的代码:

def resources = grailsApplication.mainContext.getResource('/WEB-INF/resources').file
  

在开发和生产中都有效

答案 3 :(得分:0)

我建议将配置文件从WEB-INF移动到grails-app/conf文件夹。此文件夹用于配置文件......

Grails允许您通过编辑grails.config.locations中的Config.groovy变量轻松导入自定义配置文件。见http://grails.org/doc/latest/guide/conf.html#configExternalized

如果配置文件的名称为customConfig.groovy,并且您将其移至grails-app/conf,则可以使用:

grails.config.locations = [ customConfig]

答案 4 :(得分:0)

    def config = new ConfigSlurper().parse(servletContext.getResource("/WEB-INF/config.groovy"))

适用于所有环境。