项目背景:在项目开发过程中,遇到定时调度在执行过程中发生项目停止,在项目下次重启后,需要对该调度任务进行“拯救”,重新唤醒它,并记录启动情况
Web.xml中定义servlet,初始化整个项目代码如下:
<servlet>
<servlet-name>SystemInit</servlet-name>
<servlet-class>sjgl.system.SystemInitServlet</servlet-class>
<load-on-startup>10</load-on-startup>
</servlet>
SystemInitServlet是项目启动后初始化的操作,该方法继承HttpServlet方法,具体代码如下
public class SystemInitServlet extends HttpServlet{
private static Logger log = LoggerFactory.getLogger(SystemInitServlet.class) ;
IlogService logService=(IlogService)SpringContextHolder.getBean("logService");//日志相关
ImxddService mxddService=(ImxddService)SpringContextHolder.getBean("mxddService");//更新调度
/**
*
*/
private static final long serialVersionUID = -8466250302984592411L;
/**
* 初始化完成
*/
public void init() throws ServletException {
/**
* 标记启动成功
*/
DataContext.setStart(true) ;
log.info("系统初始化完成") ;
//初始化上次关闭正在执行的调度
List<JobDetail> list=mxddService.getjob();
for(int i=0;i<list.size();i++){
JobDetail job=list.get(i);
job.setTaskstatus("0");
job.setNextfiretime(new Date());
mxddService.update(job);
Log log=new Log();
log.setId(DataContext.getnum());
log.setZt("Y");
log.setZxkssj(new Date());
log.setZxjssj(new Date());
log.setRzlb("3");
log.setZxrdm(job.getUserid());
log.setZxms(job.getName()+"调度转换状态");
logService.addlog(log);
}
}
}