You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebLogic部署Spring Boot应用报错:无法找到CDI BeanManager如何解决?

解决Spring Boot部署WebLogic时CDI BeanManager找不到的问题

需要修改的配置文件及具体方案

1. web.xml

添加CDI BeanManager的资源引用,让容器能正确定位到BeanManager实例:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!-- 添加CDI BeanManager资源引用 -->
    <resource-ref>
        <description>CDI BeanManager</description>
        <res-ref-name>BeanManager</res-ref-name>
        <res-type>javax.enterprise.inject.spi.BeanManager</res-type>
        <res-auth>Container</res-auth>
        <lookup-name>java:comp/BeanManager</lookup-name>
    </resource-ref>
</web-app>

2. weblogic.xml

调整类加载优先级,避免应用打包的CDI API与WebLogic自带实现冲突,同时开启WebInf类优先加载:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wls:weblogic-web-app [
        <!ELEMENT wls:weblogic-web-app (wls:context-root|wls:container-descriptor)*>
        <!ATTLIST wls:weblogic-web-app
                xmlns:wls CDATA #REQUIRED
                xmlns:xsi CDATA #REQUIRED
                xsi:schemaLocation CDATA #REQUIRED>
        <!ELEMENT wls:context-root (#PCDATA)>
        <!ELEMENT wls:container-descriptor (wls:prefer-application-packages|wls:prefer-web-inf-classes)*>
        <!ELEMENT wls:prefer-application-packages (wls:package-name)*>
        <!ELEMENT wls:package-name (#PCDATA)>
        <!ELEMENT wls:prefer-web-inf-classes (#PCDATA)>
        ]>
<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://java.sun.com/xml/ns/javaee
        https://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd
        http://xmlns.oracle.com/weblogic/weblogic-web-app
        http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
<wls:container-descriptor>
    <wls:prefer-application-packages>
        <wls:package-name>org.slf4j</wls:package-name>
        <!-- 排除应用打包的CDI相关包,使用WebLogic自带实现 -->
        <wls:package-name>javax.enterprise.inject.*</wls:package-name>
        <wls:package-name>javax.enterprise.context.*</wls:package-name>
    </wls:prefer-application-packages>
    <!-- 开启WebInf类优先加载,确保配置被正确识别 -->
    <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
</wls:weblogic-web-app>

3. pom.xml

  • 移除重复的spring-boot-starter-tomcat依赖
  • 将cdi-api的scope改为provided,依赖WebLogic自带的CDI实现,避免打包冲突

修改后的依赖部分:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>1.2</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.oracle.database.jdbc</groupId>
        <artifactId>ojdbc8</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.28</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

原因说明

  • web.xml的资源引用让WebLogic容器直接定位到内置的BeanManager实例
  • weblogic.xml的类加载调整避免了CDI API的版本冲突,确保容器优先使用自身的CDI组件
  • pom.xml的依赖修改减少了打包后的冗余,让应用正确依赖WebLogic提供的CDI运行环境

内容的提问来源于stack exchange,提问作者Mansi Adroja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:55:54