java ResourceBundle.getBundle()不确定

时间:2015-05-07 21:12:33

标签: java classloader java-ee-6

我在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

1 个答案:

答案 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