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

Spring Boot集成Quartz部署WebLogic首次执行任务后自动重启问题

问题根因分析

从提供的运行日志可以观测到:首次执行Quartz任务时,Spring应用的ReadinessState先切换为REFUSING_TRAFFIC(拒绝流量)状态,随后多层嵌套的AnnotationConfigServletWebServerApplicationContext依次被销毁,本质是应用上下文触发了重载流程。
结合部署环境为WebLogic、重启后所有Quartz任务均可正常运行的特征,核心触发逻辑为:Quartz默认会在首次任务执行时才完成Scheduler全量初始化,该初始化动作涉及新类加载、线程池创建等操作,被环境自带的自动重载机制判定为需要触发应用重启的条件;重启后Scheduler已完成初始化,后续无相关变更动作,因此任务运行正常。

可行解决方案
  • 方案1:移除生产环境不必要的热部署依赖
    如果你的应用引入了spring-boot-devtools依赖,该组件默认会检测类路径变更触发自动重启,Quartz首次初始化加载的类会被判定为类路径变动。生产环境建议直接移除该依赖,也可在application.properties/application.yml中添加配置排除Quartz相关资源的重启检测:
spring.devtools.restart.exclude=org/quartz/**,**/Quartz相关配置类全限定名
  • 方案2:配置Quartz JobFactory交由Spring容器托管
    默认Quartz的JobFactory会自行实例化Job对象,未纳入Spring容器生命周期管理,容易触发类加载器变动。新增自定义JobFactory适配Spring容器:
@Component
public class SpringJobFactory extends AdaptableJobFactory {
    @Autowired
    private AutowireCapableBeanFactory capableBeanFactory;

    @Override
    protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
        Object jobInstance = super.createJobInstance(bundle);
        capableBeanFactory.autowireBean(jobInstance);
        return jobInstance;
    }
}

在Quartz配置类中指定该JobFactory:

@Configuration
public class QuartzConfig {
    @Bean
    public SchedulerFactoryBean schedulerFactoryBean(SpringJobFactory springJobFactory) {
        SchedulerFactoryBean factory = new SchedulerFactoryBean();
        factory.setJobFactory(springJobFactory);
        return factory;
    }
}
  • 方案3:关闭WebLogic侧的应用自动重载配置
    WebLogic默认开启了应用上下文自动重载能力,会在检测到应用内类/线程变更时触发重启。可登录WebLogic控制台,进入对应应用的「配置>部署」页面,找到「重载」相关配置项,将「重载启用」设置为false,保存后重新部署应用即可。

  • 方案4:调整Quartz初始化时机为应用启动阶段
    避免首次任务执行时才触发初始化动作,在SchedulerFactoryBean配置中添加启动延迟参数,让Quartz随Spring容器启动完成初始化:

// 在QuartzConfig的schedulerFactoryBean方法中添加该行配置
factory.setStartupDelay(10); // 单位为秒,可根据应用启动耗时调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:54:06