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

Spring Security配置部署Tomcat10时遇UnsupportedOperationException求助

Spring Security部署Tomcat10报错的解决方法

问题根源

Tomcat 10严格遵循Servlet 3.0规范第4.4节,Spring Security自动注册的ServletContextListener未被正确标记为合法监听器,导致初始化时调用了规范禁止的方法,触发java.lang.UnsupportedOperationException。

修复步骤

  • 显式开启Servlet组件扫描
    在Spring主配置类上添加@ServletComponentScan注解,让容器自动识别并注册带有@WebListener的组件:

    import org.springframework.boot.web.servlet.ServletComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ServletComponentScan
    public class AppConfig {
        // 已有配置保持不变
    }
    
  • 手动初始化Spring Security
    创建继承AbstractSecurityWebApplicationInitializer的类,替代自动配置来注册监听器和过滤器,确保符合Servlet规范:

    import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
    
    public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer {
        // 无需编写额外代码,此类会自动完成Spring Security的初始化注册
    }
    
  • 排查依赖冲突
    检查pom.xml,确保所有Servlet相关依赖都是Jakarta EE 9+版本(jakarta.servlet开头),排除旧版javax.servlet依赖:

    <!-- 正确的Servlet API依赖 -->
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>6.0.0</version>
        <scope>provided</scope>
    </dependency>
    
    <!-- Spring Security Web依赖 -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>6.1.2</version>
    </dependency>
    
  • 临时Tomcat配置调整(不推荐长期使用)
    若以上方法无效,可修改Tomcat的context.xml,添加allowCasualMultipartParsing="true"临时绕过规范检查:

    <Context allowCasualMultipartParsing="true">
        <!-- 原有配置内容 -->
    </Context>
    

内容的提问来源于stack exchange,提问作者Kleber Mota

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:37:14