我们正在从 Websphere 服务器迁移到 Tomcat 服务器,但在使以前的属性文件正常工作时遇到了一些问题。
现在,属性文件存储在 WEB-INF/properties/example.properties
下
servlet 和 java 类在 src/com/java/Example.java
Websphere 下的属性文件使用如下方式引用:
ResourceBundle props = ResourceBundle.getBundle("properties.example", Locale.getDefault());
这在 Tomcat 下不起作用。它们是从常规 java 类引用的,而不是从 servlet 引用的,所以我不能直接使用 get getServletContext()。到目前为止,我能够让它工作的唯一方法是使用:
InputStream props = getServletContext().getResourceAsStream("/WEB-INF/properties/example.properties")
然后我可以将它从 servlet 传递给 java 类的构造函数并使用 this.prop = prop;
引用它 问题是,我有很多属性文件,它们都通过各种 Java 类,使得这种解决方案真的非常麻烦和不优雅,并且需要比我希望的更多的改变。
我会尽力澄清任何似乎不清楚的地方。提前致谢。
最佳答案
ResourceBundle
从类路径加载资源,而不是从 web 内容。该文件需要进入 /WEB-INF/classes/properties/example.properties
才能出现在类路径中并以这种方式访问。它在 Websphere 中的工作可能只是该服务器的许多奇怪(非标准)功能之一。
关于java - Web 服务器属性加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16904800/