首页 > 解决方案 > 覆盖类加载器“父优先”

问题描述

我在 Web 应用程序服务器单节点设置上运行 Java Web 应用程序,其中我使用了一个库,我包含在我的 Web-Inf 中并在我的代码中使用。

问题是我有另一个应用程序将其库添加到 WebSphere 父 lib 文件夹中,其中一个库与我正在使用的库相同,但版本较旧,从而产生冲突并干扰我的代码。

不幸的是,服务器类加载器首先配置为父级,我无法改变这一事实。我的问题是,如何让我的应用程序使用我的库,而忽略类加载器使用的库?

标签: javajakarta-eewebsphereclassloader

解决方案


解决方案是将有冲突的包移动到共享库,将库配置为使用隔离的类加载器,并将该库与您的应用程序或模块相关联。“隔离类加载器”设置为共享库创建了一个单独的父类加载器,因此您可以将该行为仅针对需要它的工件,而不必将其应用于整个应用程序或模块。

https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/tcws_sharedlib.html

我专门引用了“为此共享库使用隔离的类加载器”设置。


推荐阅读