WebLogic 12.2.1:使用EAR中的版本覆盖common_modules中的Jackson库

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

鉴于部署在WebLogic 12.2.2.1上的Spring 2.8.11-RELEASE Web应用程序和Jackson 2.8.10,我们遇到了问题,因为加载的Jackson版本是WLS oracle_common/modules树中的旧版本,它优先于其他图书馆。

我们尝试了以下方法:

  1. 在weblogic.xml中添加首选语句

<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]

  1. 将com.fasterxml.jackson。* jar文件放在域lib文件夹中

没有任何效果。

此外,请注意这是一个共享的WebLogic实例,我们只对域文件夹具有写入权限,因此我们无法做出创造性的想法,例如从oracle_common文件夹中物理删除有问题的遗留杰克逊jars,或者弄乱patch_classpath或类似的东西。

任何帮助非常感谢!

spring jackson weblogic12c
1个回答
1
投票

问题是prefer-application-packages指令被放在EAR内部WAR包内的weblogic.xml中,并且类路径没有以正确的顺序选择它:

foo-ear -> foo.war -> WEB-INF/weblogic.xml

我们通过将指令置于EAR级别来解决它:foo-ear -> META-INF -> weblogic-application.xml

现在它正常工作。

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