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

Websphere 如何更改从WEB-INF/lib加载的JAR的顺序?,websphere,websphere-7,Websphere,Websphere 7,我正在WAS7.0中配置Java web模块。我的所有模块jar都在WEB-INF/lib目录中,它们都在加载。我的问题是它们加载的顺序。我有两个jar:someJar.jar和apachforsomejar.jar,它们都位于WEB-INF/lib中aPatchForSomeJar.jar为someJar.jar中的某些类添加补丁。问题是模块类路径上的someJar.jar高于补丁。这会导致原始jar中的类在修补jar中的修补版本上使用 在我的开发环境(WinXP上的RAD 7.5)中,模块类

我正在WAS7.0中配置Java web模块。我的所有模块jar都在WEB-INF/lib目录中,它们都在加载。我的问题是它们加载的顺序。我有两个jar:
someJar.jar
apachforsomejar.jar
,它们都位于WEB-INF/lib中
aPatchForSomeJar.jar
someJar.jar
中的某些类添加补丁。问题是模块类路径上的
someJar.jar
高于补丁。这会导致原始jar中的类在修补jar中的修补版本上使用

在我的开发环境(WinXP上的RAD 7.5)中,模块类路径是按字母顺序加载的(这导致
apachforsomejar.jar
someJar.jar
之前加载)。但是,当部署到测试环境(GNU/Linux上的WAS7.0)时,模块类路径似乎是以随机顺序加载的(至少不是字母顺序),其中补丁加载在原始Jar之后


有人知道我是如何改变模块加载WEB-INF/lib jar的顺序的吗?

据我所知,没有按字母顺序加载jar文件的概念

您的打包模式需要重新审视——打包patch.jar和original.jar会让您感到悲伤

当patch.jar包含固定的jar时,为什么需要原始jar

即使您想保留original.jar和patch.jar(我假设它是完整的),您也可以尝试使用类加载器层次结构来确保patch.jar总是比original.jar先加载

例如,您可以使用parent_last的类加载策略在共享库级别打包original.jar,并将patch.jar保存在WEB-INF/lib中

虽然我建议这是一种选择,但是你应该考虑用PoCH.jar替换OrgInal.jar,或者让补丁包含所有已更改的文件(并将它们从原JAR中删除)


Manglu

我还不能确认,但谣传7.0的模块类装入器是一个“惰性装入器”。。。因此,它会根据需要加载每个罐子。这可以解释类路径看似随机的顺序。如果我能找到一些文档或对此的确认,我将更新我的问题。我们需要两个jar,因为两个jar都不包含整个图片。。。someJar.jar中有一些类不在ApachForSomejar.jar中,反之亦然。我同意最好的解决方案是将两个jar合并为一个,这样我们就可以在路径上使用一个最新版本。尽管如此,我仍然对类路径排序感到好奇。Manglu的第一句话是正确的:没有办法对WEB-INF/lib/的内容进行排序。不管怎样,在多个jar文件中存在相同的类在某种程度上是有问题的,您永远不知道实际加载的是哪一个。我想说,如果真的有那么重要的话,请从jar文件中删除重复的类,假设它们是开源的,而不是专有的。