如何在Google App Engine中加载属性文件?

时间:2009-09-01 13:39:14

标签: java google-app-engine java-ee

所以我正在尝试为我的项目添加一些功能,以允许我的部署工件中的用户定义属性 - 一个简单的键:value .properties文件。我将service.properties文件放在

war/WEB-INF/my-service.properties 

在我的ServiceImpl.java构造函数中,我有以下内容:

String propertiesFileName = "my-service.properties"; 

URL propertyURL = ClassLoader.getSystemResource(propertiesFileName);
URL propertyURL2 = this.getClass().getClassLoader().getResource(propertiesFileName);
URL propertyURL3 = this.getClass().getClassLoader().getResource( "WEB-INF/" + propertiesFileName);
URL propertyURL6 = this.getClass().getClassLoader().getResource(
       "E:/Projects/eclipse-workspace/projectName/war/WEB-INF/" + propertiesFileName);

属性URL的所有实例均为空。我知道我错过了一些绝对明显的东西,但我需要第二双眼睛。问候。

编辑:

啊,似乎我很困惑,因为默认的GAE项目在/ war中创建了logging.properties文件。来自Google App Engine documentation:

App Engine Java SDK在appengine-java-sdk / config / user /目录中包含模板logging.properties文件。要使用它,请将文件复制到WEB-INF / classes目录(或WAR中的其他位置),然后将系统属性java.util.logging.config.file复制到“WEB-INF / classes / logging.properties”(或无论您选择哪条路径,相对于应用程序根目录。您可以在appengine-web.xml文件中设置系统属性,如下所示:

3 个答案:

答案 0 :(得分:10)

尝试将service.properties放在WEB-INF / classes中。然后只需使用以下内容即可访问:

this.getClass().getClassLoader().getResourceAsStream("/filename.properties");

答案 1 :(得分:1)

正如Mike在对jsight的回答中提到的{{3}},如果我使用

,它对我有用
this.getClass().getClassLoader().getResourceAsStream("filename.properties");
将文件放入WEB-INF / classes后

(删除第一个斜杠)。

答案 2 :(得分:0)

我认为你需要的是这样的:

String filePath = servletContext.getRealPath(“/ WEB-INF / views /”)+“/”+ mav.getViewName()+“。vm”; FileInputStream in = new FileInputStream(filePath);

我从spring获得了servletContext:@Autowire ServletContext。