JBoss 6.4 中的类加载顺序:WEB-INF/classes 还是模块先加载?
Order of classloading in JBoss 6.4: Is WEB-INF/classes or modules loaded first?
我的 WAR
的 WEB-INF/classes
中有一个名为 abc.properties
的 属性 文件。另外,我将它放在一个(正确注册的)模块中。当我打电话时:
ResourceBundle.getBundle("abc")
将选择哪个文件?
在我们的生产环境中,放置在 WAR
中的文件正在被挑选(一致)但是在 UAT 环境中(具有相同版本的 JBoss),它是被选中的模块中的 属性 文件(一致)
JBoss 是否有定义的顺序将资源加载到类路径中,还是随机发生? (虽然我们没有观察到任何随机性。)
(模块已在生产服务器中正确注册,因为其他资源,即放置在模块中的 ojdbc jar
正在正确加载)
这是我们module.xml在注册模块
<module xmlns="urn:jboss:module:1.0" name="com.oracle">
<resources>
<resource-root path="ojdbc6.jar"/>
<resource-root path="properties"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
abc.properties
放置在上述模块
中定义的 properties
文件夹内
P.S: 我知道以这种方式放置两个 属性 同名文件是错误的做法,但我想想知道为什么我会看到这样的行为。
你可以查看官方documentation关于EAP 6.4的类加载优先级
我的 WAR
的 WEB-INF/classes
中有一个名为 abc.properties
的 属性 文件。另外,我将它放在一个(正确注册的)模块中。当我打电话时:
ResourceBundle.getBundle("abc")
将选择哪个文件?
在我们的生产环境中,放置在 WAR
中的文件正在被挑选(一致)但是在 UAT 环境中(具有相同版本的 JBoss),它是被选中的模块中的 属性 文件(一致)
JBoss 是否有定义的顺序将资源加载到类路径中,还是随机发生? (虽然我们没有观察到任何随机性。)
(模块已在生产服务器中正确注册,因为其他资源,即放置在模块中的 ojdbc jar
正在正确加载)
这是我们module.xml在注册模块
<module xmlns="urn:jboss:module:1.0" name="com.oracle">
<resources>
<resource-root path="ojdbc6.jar"/>
<resource-root path="properties"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
abc.properties
放置在上述模块
properties
文件夹内
P.S: 我知道以这种方式放置两个 属性 同名文件是错误的做法,但我想想知道为什么我会看到这样的行为。
你可以查看官方documentation关于EAP 6.4的类加载优先级