sam_wang 发表于 2017-10-23 09:55:27

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

3.7.1版本提供的 定时任务例子 service 注入为 null   代码中报错信息直接不打印 .
请问 系统如何合理注入容器对象.?http://www.jeecg.org/static/image/smiley/default/shocked.gif
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;




页: [1]
查看完整版本: 3.7.1 定时任务功能 到底如何使用?例子不明白