我正在WAS 7.0中配置Java Web模块。我在WEB-INF / lib目录中拥有所有模块JAR,它们都在加载。我的问题是他们加载的顺序。我有2个Jars:someJar.jar
和aPatchForSomeJar.jar
,它们都位于WEB-INF / lib中。 aPatchForSomeJar.jar
修补了someJar.jar
中的一些类。问题是someJar.jar
在模块类路径上比补丁更高。这导致原始jar中的类被用于修补jar中的修补版本。
在我的开发环境(win 7.5中的RAD 7.5)中,模块类路径按字母顺序加载(导致aPatchForSomeJar.jar
在someJar.jar
之前加载)。但是,当部署到测试环境(GNU / Linux上的WAS 7.0)时,看起来模块类路径以随机顺序加载(至少不是字母顺序),其中补丁是在原始Jar之后加载的。
有谁知道我如何更改模块加载WEB-INF / lib jar的顺序?
答案 0 :(得分:3)
据我所知,没有按字母顺序加载jar文件的概念。
您的包装模型需要重新审视 - 包装patch.jar和original.jar会让您感到悲伤。
当patch.jar包含固定的jar时,为什么需要原始的jar?
即使您想保留original.jar和patch.jar(假设它已完成),您也可以尝试使用类加载器层次结构来确保首先加载patch.jar,而不是始终加载.jar
例如,您可以使用parent_last的类加载策略将original.jar打包到共享库级别,并将patch.jar保存在WEB-INF / lib中。
虽然我建议将其作为替代方案,但您应该考虑用patch.jar替换orginal.jar,或者让补丁包含所有已更改的文件(并将其从original.jar中删除)
HTH
Manglu