蒲鸽NotFound 2017-04-21 01:22 采纳率: 0%
浏览 2028
已结题

Quartz 定时器部署到Tomcat 只运行2、3个job,其他的不运行且不是固定的按配置运行

集成的Quartz在idea开发工具上不管配置几个JOB,就算配置在同一时间触发,也会正常的执行,而将项目部署到Tomcat,只执行2个或三个JOB且是不固定的,配置为相同
时间的JOB只执行一个,不知道是何原因,望精通Quartz定时器的前辈指点一二。非常感谢。。。

    cylceTime = timeValue + "小时";
                    //每几小时执行一次(从当前小时开始往后推如当前时间为10:50,下一次执行时间为12:00以此类推)
                    scheduleJob.setCronExpression("0 " + defaultM + " " + defaultH + "/" + timeValue + " * * ?");
                    //scheduleJob.setCronExpression("0 4 16 1/1 * ?");
                } else if (timeType.equals("2")) {
                    cylceTime = timeValue + "天";
                    //每几天执行一次
                    scheduleJob.setCronExpression("0 " + defaultM + " " + defaultH + " " + timeValue + "/" + timeValue + " * ?");
                } else {
                    cylceTime = timeValue + "月";
                    //每几月执行一次0 0 0 1 * ?
                    scheduleJob.setCronExpression("0 " + defaultM + " " + defaultH + " 0 " + timeValue + "/" + timeValue + " ?");

                }
                scheduleJob.setSchemeNum(rbspDispatchInfo.getFollowedSchemeNum());
                scheduleJob.setDispatchNum(rbspDispatchInfo.getDispatchNum());

//                scheduleJob.setCronExpression("*/5 30 15 * * ?");
//                scheduleJob.setCronExpression("*/5 * * * * ?");
                scheduleJobService.add(scheduleJob);
  /**
     * 添加定时任务
     * @param scheduleJob
     */
    public void add(ScheduleJob scheduleJob){
        @SuppressWarnings("rawtypes")
        Class job = null;
        try {
            job = Class.forName(scheduleJob.getClassName());
        } catch (ClassNotFoundException e1) {
            log.error("任务类没找到");
            e1.printStackTrace();
        }
        @SuppressWarnings("unchecked")
        JobDetail jobDetail = JobBuilder.newJob(job).withIdentity(scheduleJob.getName(), scheduleJob.getGroup()).build();
        jobDetail.getJobDataMap().put("scheduleJob", scheduleJob);

        //表达式调度构建器(可判断创建SimpleScheduleBuilder)
        CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression());

        //按新的cronExpression表达式构建一个新的trigger
        CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(scheduleJob.getName(), scheduleJob.getGroup()).withSchedule(scheduleBuilder).build();
        try {
            scheduler.scheduleJob(jobDetail, trigger);
            log.info("定时任务添加成功["+scheduleJob.getDispatchNum()+"]");
        } catch (SchedulerException e) {
            log.error("定时任务添加失败["+scheduleJob.getDispatchNum()+"]");
            e.printStackTrace();
        }
    }
  • 写回答

3条回答 默认 最新

  • 程序新视界 《Spring Boot技术内幕》作者 2017-04-21 01:29
    关注

    正常情况下不会出现这种问题的。贴出来你触发定时任务的配置或代码吧。看到哪里犯了很低级的错误

    评论

报告相同问题?

悬赏问题

  • ¥15 链接问题 C++LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接