Weblogic 12.2.1和OpenSaml2发生冲突

时间:2018-07-16 09:47:25

标签: java spring-boot weblogic opensaml

我有一个使用opensaml依赖项(旧版本2.2.3)的spring boot Web服务应用程序。当我部署到Weblogic时,我得到:

Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Logger
        at org.opensaml.xml.XMLConfigurator.<clinit>(XMLConfigurator.java:60) ~[com.oracle.weblogic.security.opensaml2.jar:na]

我执行的解决方法与此用户相同:https://stackoverflow.com/a/20913280/2968729。我将其重命名为com.oracle.weblogic.security.opensaml2.jar,因此它将被忽略。

如错误所述,weblogic拥有自己的opensaml2.jar,它使用log4j,这在我的应用程序类路径中不存在,这就是失败的原因。

因此,重点是:我既不想添加log4j也不想使用com.oracle.weblogic.security.opensaml2.jar,而是要从类路径中添加我的opensaml。实现此目标的正确方法是什么?

weblogic.xml:

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
        xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app
        http://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">
    <wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4j</wls:package-name>
            <wls:package-name>ch.qos.logback.*</wls:package-name>
            <wls:package-name>org.opensaml</wls:package-name>
            <wls:package-name>org.apache.cxf</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
</wls:weblogic-web-app>

我已经指定使用我的类路径的opensaml,所以我不知道发生了什么。

1 个答案:

答案 0 :(得分:0)

太愚蠢了:weblogic.xml放在错误的位置,因此被忽略了。我把它放在src / main / resource文件夹中。

它必须在src/main/webapp/WEB-INF/weblogic.xml

请注意,这里有webapp个文件夹!