鉴于部署在WebLogic 12.2.2.1上的Spring 2.8.11-RELEASE Web应用程序和Jackson 2.8.10,我们遇到了问题,因为加载的Jackson版本是WLS oracle_common/modules
树中的旧版本,它优先于其他图书馆。
我们尝试了以下方法:
<prefer-application-packages>
<package-name>com.fasterxml.jackson.*</package-name>
</prefer-application-packages>
使用-verbose:class
标志运行清楚地表明正在加载坏罐子:
[来自文件的加载的com.fasterxml.jackson.databind.type.ArrayType:/u01/oracle/oracle_common/modules/com.fasterxml.jackson.core.jackson-databind.jar]
lib
文件夹中没有任何效果。
此外,请注意这是一个共享的WebLogic实例,我们只对域文件夹具有写入权限,因此我们无法做出创造性的想法,例如从oracle_common文件夹中物理删除有问题的遗留杰克逊jars,或者弄乱patch_classpath或类似的东西。
任何帮助非常感谢!
问题是prefer-application-packages
指令被放在EAR内部WAR包内的weblogic.xml中,并且类路径没有以正确的顺序选择它:
foo-ear -> foo.war -> WEB-INF/weblogic.xml
我们通过将指令置于EAR级别来解决它:foo-ear -> META-INF -> weblogic-application.xml
现在它正常工作。