我们正在从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类路由,使得这种类型的解决方案真的非常麻烦和不优雅,并且需要比我希望的更多变化。
我会试着澄清一些似乎不清楚的事情。提前谢谢。
答案 0 :(得分:2)
ResourceBundle
从类路径加载资源,而不是从webcontent加载资源。该文件需要进入/WEB-INF/classes/properties/example.properties
才能出现在类路径中并以这种方式访问。它在Websphere中的工作可能只是该服务器的许多奇怪(非标准)功能之一。