web应用中的调度——简介

首先,任务调度的思想就是: 设置一个任务,使容器在指定的时间,及指定的时间间隔一次或多次的做这个任务。

实现的方式是java的定时器(也有用触发器的)。在servlet里面设置一个定时器,让该定时器在容器开始运行的时候就设置好,然后就是设置定时任务,在定时任务中完成自己的任务。

web.xml配置:

<servlet>
	    <servlet-name>DutyRemindUtil</servlet-name>
	    <servlet-class>com.xxx.xxxx.web.xx.xx.dutyMg.util.DutyRemindServlet</servlet-class>
	       <init-param>
			<param-name>startTask</param-name>	<!-- 设置servlet初始参数 -->	
			<param-value>true</param-value>    
		</init-param>
		<init-param>
			<param-name>intervalTime</param-name>
			<param-value>1</param-value>
		</init-param>
		<load-on-startup>20</load-on-startup>  <!-- load-on-startup设置servlet的优先级 -->
	</servlet>

servlet :

<pre name="code" class="java">public class DutyRemindServlet extends HttpServlet{
	
	private static final long serialVersionUID = 1L;
	private Timer DutyRemindTimer = null;
	private TimerTask DutyRemindTimerTask = null;
	
	public DutyRemindServlet(){
		super();
	}
	public void destroy(){
		super.destroy();
		if(DutyRemindTimer != null){
			DutyRemindTimer.cancel();
		}
	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		super.doGet(request, response);
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		super.doPost(request, response);
	}
	
	public void init(ServletConfig config)throws ServletException {
		super.init(config);
        String startTask = getInitParameter("startTask");
        Long intervalTime = Long.parseLong(getInitParameter("intervalTime"));   
        
        Date now = new Date();
		@SuppressWarnings("deprecation")
		Date target = new Date(now.getYear(),now.getMonth(),now.getDate(),00,05,00);
        // 启动定时器   
        if(startTask.equals("true")){
        	DutyRemindTimer = new Timer();
        	DutyRemindTimerTask =new DutyRemindTimerTask();
//        	DutyRemindTimer.schedule(DutyRemindTimerTask, target, intervalTime * 60 * 60 * 24 * 1000);
        	DutyRemindTimer.scheduleAtFixedRate(DutyRemindTimerTask, target, intervalTime * 60 * 60 * 24 * 1000);
        }
	}
}

 

调度任务class(继承自 TimerTask 类):

public class DutyRemindTimerTask extends TimerTask{
	
	Log Logger = LogFactory.getLog(DutyRemindTimerTask.class);
	
	@Override
	public void run(){
		ResponseObject result = ServiceUtils.invoke("component:oa/dutyMg.daily.dutyRemind", "setDutyRemind", null); //调度任务
		Logger.debug("值班人员通知:已发出"+result.getResult()+"条消息");
	}
}

关于java Timer的使用可以参考一下链接:http://www.cnblogs.com/yank/p/3955322.html






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值