开发者社区 问答 正文

使用spring task定时器,被shiro拦截了,如何解决?

大家好,现在用spring task 做定时任务,注解实现方式,但是在启动后,等待时间到时,却报错了,个人感觉貌似被shiro的访问拦截了。 找遍了google, 百度,无法解决,希望得到帮助,本人在线等。
图片说明图片说明
screenshot
screenshot

展开
收起
小旋风柴进 2016-03-04 14:25:59 5706 分享 版权
1 条回答
写回答
取消 提交回答
  • spring定时器TimerTask用法:
    在tomcat服务启动,spring定时器容器加载时会执行定时器里的任务,可设置时间间隔和延迟执行时间,具体做法如下:

    定时器Java代码:

    package com.coalmine.desktop;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.TimerTask;
    public class Task extends  TimerTask {
     @Override
    //定时器入口,run()里面是你的任务作业
     public void run() {
      
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date date =  new Date();
      System.out.println(sdf.format(date) + "  执行TimerTask定时器===============");
      
     }
    }

    applicationContext.xml配置如下:

    <!-- spring定时任务配置 -->
     <bean id="deskTask" class="com.coalmine.desktop.Task"></bean>
     <bean id="scheduledTask"
      class="org.springframework.scheduling.timer.ScheduledTimerTask">
      <property name="timerTask">
       <ref bean="deskTask" />
      </property>
      <!--任务执行周期 5s (此处单位是毫秒)-->
      <property name="period">
       <value>5000</value>
      </property>
      <!--延时10s 执行任务 -->
      <property name="delay">
       <value>10000</value>
      </property>
     </bean>
     <!--启动定时器 -->
     <bean id="timerBean"
      class="org.springframework.scheduling.timer.TimerFactoryBean">
      <property name="scheduledTimerTasks">
       <list>
        <ref bean="scheduledTask" />
       </list>
      </property>
     </bean>

    OK,就这么简单,当启动服务后加载完定时器,延迟10秒后,每隔5秒执行一次run()

    2019-07-17 18:52:15
    赞同 展开评论