WebLogic 12.2.1:使用 EAR 中的版本覆盖 common_modules 中的 Jackson 库
WebLogic 12.2.1: Override Jackson library in common_modules with version in EAR
鉴于 Spring 4.3.11-RELEASE Web 应用程序在 WebLogic 12.2.2.1 上部署了 Jackson 2.8.10,我们 运行 遇到了问题,因为加载的 Jackson 版本是旧版本位于 WLS oracle_common/modules
树中的一个,优先于其他库。
我们尝试了以下方法:
- 在 weblogic.xml
中添加偏好声明
<prefer-application-packages>
<package-name>com.fasterxml.jackson.*</package-name>
</prefer-application-packages>
运行 -verbose:class
标志清楚地表明正在加载错误的 jar:
[Loaded com.fasterxml.jackson.databind.type.ArrayType from
file:/u01/oracle/oracle_common/modules/com.fasterxml.jackson.core.jackson-databind.jar]
- 将 com.fasterxml.jackson.* jar 文件放入域
lib
文件夹
没有任何效果。
此外,请注意这是一个共享的 WebLogic 实例,我们在其中只有对域文件夹的写访问权限,因此我们无法提出创造性的想法,例如从 oracle_common 文件夹中物理删除有问题的遗留 Jackson 罐子,或弄乱 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
现在可以正常工作了。
鉴于 Spring 4.3.11-RELEASE Web 应用程序在 WebLogic 12.2.2.1 上部署了 Jackson 2.8.10,我们 运行 遇到了问题,因为加载的 Jackson 版本是旧版本位于 WLS oracle_common/modules
树中的一个,优先于其他库。
我们尝试了以下方法:
- 在 weblogic.xml 中添加偏好声明
<prefer-application-packages>
<package-name>com.fasterxml.jackson.*</package-name>
</prefer-application-packages>
运行 -verbose:class
标志清楚地表明正在加载错误的 jar:
[Loaded com.fasterxml.jackson.databind.type.ArrayType from file:/u01/oracle/oracle_common/modules/com.fasterxml.jackson.core.jackson-databind.jar]
- 将 com.fasterxml.jackson.* jar 文件放入域
lib
文件夹
没有任何效果。
此外,请注意这是一个共享的 WebLogic 实例,我们在其中只有对域文件夹的写访问权限,因此我们无法提出创造性的想法,例如从 oracle_common 文件夹中物理删除有问题的遗留 Jackson 罐子,或弄乱 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
现在可以正常工作了。