我在WebSphere上运行的Java EE应用程序中发生了非常非常奇怪的情况。
EAR
--someJar.jar
----config/propfile.properties
--WAR
----WEB-INF
------classes
--------config/propfile.properties
当应用程序启动时,ResourceBundle.getBundle(“config / propfile.properties”)似乎从WAR / WEB-INF / classes / config / propfile.properties读取someProperty。
然而,在应用程序启动并运行后,ResourceBundle.getBundle(“config / propfile.properties”)似乎从someJar.jar / config / propfile.properties读取someProperty。
我认为它的发生方式是因为我们在每个文件上都有someProperty的不同值,并且我们遇到了一些错误(由于someJar.jar / config / propfile.properties中的值不正确)。根据Java EE规范,WEB-INF / classes应该首先加载?
甚至可能吗?我们无法在任何较低的环境中复制问题。
WAR/META-INF/MANIFEST.MF
是...... Class-Path: lib/begin...lib/end someJar.jar
答案 0 :(得分:1)
如果对ResourceBundle.getBundle("config/propfile.properties")
的第二次调用来自ejb模块中的一个类,则无法访问WAR/WEB-INF/classes/config/propfile.properties
。这是因为每个模块都有不同的类加载器。
从以下链接(或您的javaee标准的相应规范)下载ee规范。
http://download.oracle.com/otndocs/jcp/javaee-6.0-fr-eval-oth-JSpec/
在此版本中,相关部分为EE.8.3