如何更改从WEB-INF / lib加载的jar的顺序?

时间:2012-04-18 18:33:02

标签: websphere websphere-7

我正在WAS 7.0中配置Java Web模块。我在WEB-INF / lib目录中拥有所有模块JAR,它们都在加载。我的问题是他们加载的顺序。我有2个Jars:someJar.jaraPatchForSomeJar.jar,它们都位于WEB-INF / lib中。 aPatchForSomeJar.jar修补了someJar.jar中的一些类。问题是someJar.jar在模块类路径上比补丁更高。这导致原始jar中的类被用于修补jar中的修补版本。

在我的开发环境(win 7.5中的RAD 7.5)中,模块类路径按字母顺序加载(导致aPatchForSomeJar.jarsomeJar.jar之前加载)。但是,当部署到测试环境(GNU / Linux上的WAS 7.0)时,看起来模块类路径以随机顺序加载(至少不是字母顺序),其中补丁是在原始Jar之后加载的。

有谁知道我如何更改模块加载WEB-INF / lib jar的顺序?

1 个答案:

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