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