如何使用jax-rs的属性文件?

时间:2011-10-26 13:41:32

标签: java tomcat properties jax-rs

我刚刚开始使用在Tomcat上运行的jax-rs来设置Web服务。有没有办法将属性文件与我的java项目(在eclipse中)捆绑在一起,以便我可以在运行时从中读取属性?如果可能的话,放置它的最佳位置(通过网址无法看到),Web内容,WEB-INF等?

感谢。

2 个答案:

答案 0 :(得分:6)

有几个选择:

选项1:您可以将它放在类路径下(在Eclipse中将它放在源文件夹下),以便您可以通过类加载器访问它:MyClass.class.getResourceAsStream("myproperties.properites")

注意MyClass也必须在同一个源文件夹中(实际上它有点复杂,它必须在同一个类加载器层次结构中,但是来自同一文件夹的任何类都可以完成这项工作)

选项2:将其放在WEB-INF文件夹中。这是一个首选选项,因为您不需要处理类路径。您需要一个ServletContext来访问它:javax.servlet.ServletContext.getResourceAsStream("WEB-INF/myproperties.properites")

在jax-rs中,您可以在任何已注册的资源或提供程序中使用@Context注释获取ServletContext。

答案 1 :(得分:0)

对于GlassFish 3.1用户,我能够同时使用两个Tarlog选项,但我必须使用该文件的绝对路径。对于选项1,我将文件放在NetBeans的Source Packages文件夹中,然后我可以通过以下方式访问该文件:

InputStream is = TestResource.class.getResourceAsStream("/test_model.js");

对于选项2,我将文件放在WEB-INF下并使用:

@Context ServletContext servletContext;
InputStream is = servletContext.getResourceAsStream("/WEB-INF/test_model.js");

如果没有前导斜杠,则结果为null。 HTH