`

springboot 定时任务重复执行

阅读更多

开发一数据接收WebService,里面用到定时任务@Scheduled  

每次会重复运行三次

 

 

@Slf4j
@PropertySource("classpath:common-config.properties")
@Component
public class ScheduledController {
    @Scheduled(cron="${jobs.schedule.report}")
    public void dataReportScheduled() {
        try{
            log.info("...end report data scheduled!\r\n\");
        }catch (Exception e){
            log.error("定时任务出现异常:"+e.getMessage());
        }
    }
}

最后查出来问题在下面的配置文件中红色字体部分,注释掉问题即可解决

package com.xxxxxxx.config;

import com.xxxxxxx.interceptor.AuthInterceptor;
import com.xxxxxxx.service.biz.IDataCenterBaseService;
import com.xxxxxxx.service.biz.impl.DataCenterBaseService;
import com.xxxxxxx.service.biz.impl.TransferDataServiceImpl;
import com.xxxxxxx.webservice.TransferDataService;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.xml.ws.Endpoint;

@Configuration
public class CXFConfig {

    /*******************************************************
     * WebService配置
     * @return
     *******************************************************/
    @Bean
    public IDataCenterBaseService dataCenterService() {
        return new DataCenterBaseService();
    }

    @Bean
    public AuthInterceptor authInterceptor() {
        return new AuthInterceptor(dataCenterService());
    }

    @Bean
    public ServletRegistrationBean dispatcherServlet() {
        return new ServletRegistrationBean(new CXFServlet(), "/service/*");
    }

    @Bean(name = Bus.DEFAULT_BUS_ID)
    public SpringBus springBus() {
        return new SpringBus();
    }

    @Bean
    public TransferDataService transferDataService() {
        return new TransferDataServiceImpl();
    }

    @Bean
    public Endpoint endpoint() {
        EndpointImpl endpoint = new EndpointImpl(springBus(), transferDataService());
        endpoint.publish("/transfer");
        endpoint.getInInterceptors().add(authInterceptor());
        return endpoint;
    }

    /*******************************************************
     * Web应用配置
     * @return
     *******************************************************/
    @Bean
    public ServletRegistrationBean restServlet(){
        //注解扫描上下文
        AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
        //base package
        applicationContext.scan("com.xxxxxxx");
        //通过构造函数指定dispatcherServlet的上下文
        DispatcherServlet rest_dispatcherServlet = new DispatcherServlet(applicationContext);
        //用ServletRegistrationBean包装servlet
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(rest_dispatcherServlet);
        registrationBean.setLoadOnStartup(1);
        return registrationBean;
    }

    @Bean
    public ServletRegistrationBean cooleadServlet(){
        //注解扫描上下文
        AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
        //base package
        applicationContext.scan("com.xxxxxxx");
        //通过构造函数指定dispatcherServlet的上下文
        DispatcherServlet rest_dispatcherServlet = new DispatcherServlet(applicationContext);
        //用ServletRegistrationBean包装servlet
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(rest_dispatcherServlet);
        registrationBean.setLoadOnStartup(1);
        //指定urlmapping
        registrationBean.addUrlMappings("/xxxxxxx/*");
        //指定name,如果不指定默认为dispatcherServlet
        registrationBean.setName("xxxxxxx");
        return registrationBean;
    }

}

 

 

去网上搜了一下相关的帖子,有类似问题的

https://blog.csdn.net/tly_74125/article/details/80925599

 

 

0
0
分享到:
评论

相关推荐

    spring定时任务执行两次的异常排查处理

    一个tomcat下部署了两个应用,一个是普通web应用syncc,另一个应用syncc_wx属于微信公众号后台程序涉及消息定时推送,tomcat未分离...”spring定时任务执行两次的异常排查处理.docx"针对上述描述问题进行分析和解决。

    SpringBoot 整合Quartz(集群)实现定时任务调度

    SpringBoot整合Quartz实现定时任务调度是企业级应用中常见的需求,主要用于自动化执行某些周期性的任务,例如数据备份、报表生成、系统维护等。Quartz是一个功能强大的开源作业调度框架,能够灵活地定义任务和调度...

    spring-boot 定时任务集群

    在分布式环境中,为了保证任务的高可用性和避免任务重复执行,我们需要进行集群部署。在Spring Boot中,可以通过以下策略实现: 1. **任务调度中心**:引入Quartz或者Spring Cloud Task等第三方任务调度框架,将...

    spring java 定时器 执行两次 quartz

    下面将详细介绍如何使用Spring集成Quartz,以及解决定时任务重复执行的问题。 首先,让我们了解Spring如何配置Quartz。在Spring应用中添加Quartz支持,你需要在`pom.xml`或`build.gradle`文件中引入Quartz的依赖,...

    SpringBoot集成Quartz分布式定时任务

    此外,还需要配置集群策略,如`org.quartz.impl.jdbcjobstore.ClusterManager`,确保任务不被多个节点重复执行。 8. **监控与管理**: 可以使用Quartz提供的Web管理界面(如`AdminUI`)或API来查看和管理任务。...

    spring定时器启动两次原因及解决

    - **错误的Bean定义**:如果存在两个具有`@Scheduled`注解的相同任务Bean,Spring可能会实例化它们两次,导致任务重复执行。 - **Spring Boot自动配置问题**:默认情况下,Spring Boot会自动配置定时任务,如果...

    springboot2.3集成quartz定时任务持久化数据库,支持集群

    Quartz的集群支持确保只有一个节点执行特定的作业实例,以防止任务重复执行。通过上述配置,Quartz会利用数据库来协调各节点间的任务分配。 总结来说,Spring Boot 2.3与Quartz的集成使得我们可以轻松创建和管理...

    springboot整合quartz,实现数据库方式执行定时任务

    在现代企业级应用中,定时...这使得在分布式环境中,多个实例可以共享同一个任务列表,避免重复执行。同时,通过数据库的方式,我们还能方便地进行任务的查询、暂停、恢复和删除,极大地提升了定时任务管理的便利性。

    Quartz + SpringBoot 实现分布式定时任务demo

    这个"Quartz + SpringBoot 实现分布式定时任务demo"是一个示例项目,用于演示如何在分布式环境中使用Quartz和Spring Boot来管理定时任务。 首先,我们需要了解Spring Boot集成Quartz的基本步骤: 1. **依赖添加**...

    基于Springboot实现的管理定时任务源代码

    在本项目中,我们关注的是"基于Springboot实现的管理定时任务",这涉及到Spring Boot与定时任务的集成,主要使用了Quartz库来实现。Quartz是一个强大的、完全开源的作业调度框架,它允许开发者安排任务以执行一次或...

    利用springboot-mybatis实现定时邮件的发送

    在本项目中,我们主要探讨如何使用Spring Boot和MyBatis框架来实现在MySQL数据库中的定时任务,以发送生日祝福邮件。Spring Boot以其简洁的配置和强大的功能深受开发者喜爱,而MyBatis作为轻量级的持久层框架,能够...

    基于SSM+quartz的定时任务管理demo

    SimpleTrigger则适用于简单的延时或重复执行。 ```java CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 0/5 * * * ?"); CronTrigger trigger = TriggerBuilder.newTrigger() ....

    (源码)基于SpringBoot和Quartz的定时任务管理系统.zip

    通过本系统,用户可以方便地管理定时任务,查看任务执行日志,并进行任务的增删改查操作。 ## 项目的主要特性和功能 ### 主要特性 使用最新技术栈项目采用Spring Boot 2.1.0、Spring Boot Jpa、JWT、Spring ...

    springboot实现多实例crontab抢占定时任务(实例代码)

    在分布式环境中,多个实例同时运行时,可能会出现定时任务的重复执行问题,这时就需要一种机制来确保只有一个实例能够执行特定的定时任务,这就是所谓的"抢占式定时任务"。本篇将探讨如何在Spring Boot中结合Cron和...

    SpringBoot下使用定时任务的方式全揭秘(6种)

    在SpringBoot中,实现定时任务是常见的需求,尤其是在构建微服务架构时,定时任务可以用于数据同步、报表生成、定时备份等场景。本文将详细介绍六种在SpringBoot中创建定时任务的方法,以帮助开发者更好地理解和选择...

    基于Java开发的动态定时任务管理系统源码+使用说明.zip

    2. 点击页面上的**添加作业**按钮,可以添加一个新的定时任务,新任务的 Bean 名称、方法名称以及方法参数如果和已有的记录相同,则认为是重复作业,重复作业会添加失败。 这里涉及到几个参数,含义如下: - Bean ...

    集群定时任务

    在集群环境中,当一个服务器上的Quartz调度器触发一个任务时,其他服务器上的调度器会知道这个任务已经被调度,避免了重复执行。这就需要数据库中的状态信息能够被所有节点共享和更新,以保证一致性。 至于文件名...

    Job Plus项目是基于SpringBoot+Vue的轻量级定时任务管理系统.zip

    Job Plus项目是一个集成SpringBoot和Vue.js技术栈的轻量级定时任务管理系统,旨在提供一个高效、易用的平台来管理和调度各种定时任务。这个系统的设计理念是将后端的稳定性和灵活性与前端的交互性相结合,从而实现对...

    springboot-quartz 单机demo,分布式下demo

    在分布式环境中,为了防止任务重复执行,我们需要使用Quartz的集群模式。这需要在多个节点上部署相同的应用,并配置相同的数据库存储作业和触发器。Quartz会通过数据库来协调各个节点,确保同一任务不会在多个节点上...

    Spring整合Quartz定时发送邮件

    在Java应用程序中,Quartz可以用来在特定时间执行重复或一次性任务,如定时发送邮件。Quartz-1.8.3.jar和quartz-all-1.8.3.jar是Quartz库的不同版本,可能包含了不同的功能集或依赖。 标签中的“源码”意味着这篇...

Global site tag (gtag.js) - Google Analytics