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),您可以使用它来帮助查找冲突。有关详细信息,请参阅 。
我在独立模式下 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),您可以使用它来帮助查找冲突。有关详细信息,请参阅