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

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

谢谢。

几个选项:

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

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

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

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

对于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