关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 8605|回复: 0

3.7.1 定时任务功能 到底如何使用?例子不明白

[复制链接]
发表于 2017-10-23 09:55:27 | 显示全部楼层 |阅读模式
3.7.1  版本  提供的 定时任务例子 service 注入为 null   代码中报错信息直接不打印 .
请问 系统如何合理注入容器对象.?
org.jeecgframework.web.system.sms.util.task.SmsSendTask
-->
public class SmsSendTask implements Job{
   
    @Autowired
    private TSSmsServiceI tSSmsService;  注入为null
   
    /*@Scheduled(cron="0 0/1 * * * ?")*/
    public void run() {
        long start = System.currentTimeMillis();
        org.jeecgframework.core.util.LogUtil.info("===================推送消息定时任务开始===================");
        try {
            tSSmsService.send();
        } catch (Exception e) {
            //e.printStackTrace();
        }
        org.jeecgframework.core.util.LogUtil.info("===================推送消息定时任务结束===================");
        long end = System.currentTimeMillis();
        long times = end - start;
        org.jeecgframework.core.util.LogUtil.info("总耗时"+times+"毫秒");
    }

3.7.1 版本
定时任务 立即生效 有问题.
检查发现 点击立即生效之后 就是仅仅执行更新定时任务对象的操作而已.  而已由于页面没有传 cron 表达式参数导致保存数据报错. .
具体实现:
org.jeecgframework.core.timer.DynamicTask.updateCronExpression(TSTimeTaskEntity)
public boolean updateCronExpression(TSTimeTaskEntity task) {        
        
        try {
            String newExpression = task.getCronExpression();     // 此处获取的   newExpression 为NULL
            task = timeTaskService.get(TSTimeTaskEntity.class, task.getId());        
            
            //任务运行中
            if("1".equals(task.getIsStart())){
                CronTriggerBean trigger = (CronTriggerBean)schedulerFactory.getTrigger("cron_" + task.getId(), Scheduler.DEFAULT_GROUP);            
                String originExpression = trigger.getCronExpression();      
                //检查运行中的任务触发规则是否与新规则一致
                if (!originExpression.equalsIgnoreCase(newExpression)) {  
                    trigger.setCronExpression(newExpression);  
                    schedulerFactory.rescheduleJob("cron_" + task.getId(), Scheduler.DEFAULT_GROUP, trigger);
                }
            }
            
            //检查数据库中的任务触发规则与新规则是否一致
            if (!task.getCronExpression().equalsIgnoreCase(newExpression)) {  
                task.setCronExpression(newExpression);
                timeTaskService.updateEntitie(task);  // 执行 update 报错 . CronExpression 不能为NULL
            }
            
            return true;




代码

代码
duix2 .jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表