spring - WebLogic 12.2.1:使用 EAR 中的版本覆盖 common_modules 中的 Jackson 库
问题描述
鉴于在 WebLogic 12.2.2.1 上部署了带有 Jackson 2.8.10 的 Spring 4.3.11-RELEASE Web 应用程序,我们遇到了问题,因为正在加载的 Jackson 版本是 WLS 中的旧版本oracle_common/modules
树中的旧版本,它优先于其他版本图书馆。
我们尝试了以下方法:
- 在 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]
- 将 com.fasterxml.jackson.* jar 文件放在域
lib
文件夹中
没有任何效果。
另外,请注意这是一个共享的 WebLogic 实例,我们只有域文件夹的写入权限,所以我们不能做一些创造性的想法,比如从 oracle_common 文件夹中物理删除有问题的遗留 Jackson jar,或者弄乱 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
现在它工作正常。
推荐阅读
- matlab - MATLAB symengine 在逻辑语句上失败
- elasticsearch - ElasticSearch 和 Redis 都是过分的用例?
- css - 在 material_parallax 中更改图像的高度
- swift - Alamofire 响应序列化失败
- python - 使用python读取xml文件的结果不一致
- django - Django 自定义多对多查询
- three.js - .gltf 对象在三个.js 中加载时变黑
- swift - 如何编写单元测试返回导航
- reactjs - 为什么我不能将一般 JSX 传递给反应中的包装组件?
- git - 如何从 vsts 构建任务连接到 TfsGit