Tomcat 8+ 上的库从单个文件夹加载顺序

问题描述 投票:0回答:1

有谁知道 Tomcat 8 上单个文件夹中的库加载顺序是基于什么?

这是我的情况:

Tomcat 上部署了一个客户 Java 应用程序,由于某种原因,该应用程序在同一个 Web 应用程序共享文件夹的多个库中都有一个类。我知道这是错误的;大家都知道;但这位客户拒绝修复这个问题。

我们必须在 Kubernetes 上部署此应用程序,因此我们创建了一个 Dockerfile 和其他所有内容,并且它在大多数情况下都能正常工作。
当pod部署在某些节点上时,似乎库的加载顺序不同,导致应用程序无法正常工作。

所以,基本上,我要问的是:是否有人真正知道加载顺序是基于什么?是使用的文件系统吗?是泊坞窗覆盖吗?可以是LC_COLLATE吗?它实际上是伪随机的吗?
这些节点基本上是相同的,我真的很难找出其中的差异。

docker kubernetes tomcat filesystems
1个回答
1
投票

Servlet 规范指定的唯一顺序是

/WEB-INF/classes
中的类优先于
/WEB-INF/libs/*.jar

在 Tomcat 7 及更早版本中,

libs
中的库顺序取决于底层文件系统,因此当您将 Web 应用程序移动到不同的操作系统或不同的 Java EE 服务器时,它会中断。在 Tomcat 8 及更高版本中,它是随机设计的。就像
HashSet
一样随机。

请参阅错误 57129 中的讨论。关于

Resources
PreResources
请参阅配置参考

© www.soinside.com 2019 - 2024. All rights reserved.