解决方法可能是将Web应用程序拆分为多个应用程序,每个应用程序部署在不同的上下文中并通过Web服务进行通信。二级应用程序将是私有的。
时间戳模块的类路径具有较旧的BC版本,税务服务模块将具有不同的类路径。 “主要”前端Web应用程序根本不依赖于BC。
这并不能解决Black Duck问题,因为客户会要求升级或需要大量文书工作来允许政策例外。
基本上Java并不是为此而构建的,Maven肯定不是(因为有一个潜在的假设,即在解决这些冲突时,任何较新的版本都是旧版本的完美替代品)。
我的理解是你有一个单一的应用程序,所以你不能在物理上拆分类路径,你可以在逻辑上做到这一点。
处理此问题的一种方法是在多个类加载器中运行应用程序,以便jar文件永远不会“触摸”。我之前问了一个“如何在多个类加载器中运行”的问题 - 想要并行运行非线程安全库 - 可以使用多个类加载器来完成吗? - 这种方法与装载罐子相结合 不 在类路径上可能是可行的。