weblogic 类加载器 vs maven 依赖项

weblogic classloader vs maven dependencies

我在独立模式下 spring 启动应用程序,运行。我更改了它,以便它构建 war 并可以部署到应用程序服务器,它可以,到 wildfly,并且它可以工作。现在到weblogic。以前没用过,所以一头雾水,只好做错了。

基本上在部署时它会抱怨缺少依赖项,但它们存在于 war 中。看起来,这是因为 weblogic 类加载器,它更喜欢它自己的 类 而不是 war 中的类加载器。所以我创建了 weblogic.xml 文件并尝试:

<prefer-web-inf-classes>true</prefer-web-inf-classes>

这被忽略了。好的,那我们可以这样做:

<prefer-web-inf-classes>false</prefer-web-inf-classes>
<prefer-application-packages>
    <package-name>javax.faces.*</package-name>
    <package-name>com.sun.faces.*</package-name>
    <package-name>com.bea.faces.*</package-name>
</prefer-application-packages>

这样错误就开始消失了。伟大的。

但是...这意味着,我写的第二个 pom.xml 没有传递依赖性!这不正常吧?在 weblogic 上部署的正确方式是什么?

不幸的是,开始时自定义 prefer-application-packages 元素是正确的方法。应用程序必须明确告诉 WebLogic 应用程序中的哪些包覆盖 WebLogic 中提供的包。

WebLogic 提供了一个类加载器分析工具 (CAT),您可以使用它来帮助查找冲突。有关详细信息,请参阅