快速业务通道

一个简单的Timer Service - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

一个简单的Timer Service

时间:2010-09-13

Web-TimeService用于定时调用(触发)应用,EJB2.1也提供了TimerService,但现在有的application server不支持,有的就根本没有用到ejb,所以我写了一个简单的TimerSerivce

Public class TimerService {  public static final long p = 1000*60*60;   Timer timer = new Timer(false);   TimerSchedule schedule = null;  public TimerService()  {  }  public void start() throws Exception  {   schedule = new TimerSchedule();   schedule.addTimerJob(new SomeTimerJob());   //add other job here   timer.schedule(schedule,0,p);  }  public void stop() throws Exception  {   timer.cancel();  } } //包含了多个TimerJob,并每到一定时候取出来看看是否该调用 public class TimerSchedule extends TimerTask {  private List list = new ArrayList();  public TimerSchedule()  {}  public void addTimerJob(TimerJob job)  {   list.add(job);  }  public void run()  {   Date now = Calendar.getInstance().getTime();   Date next = null;   for(int i=0;i<list.size();i++)   {    TimerJob job = (TimerJob)list.get(i);    next = job.getNextExeDate();    if(isEquals(now,next))    {     job.execute();    }   }  } /** * 比较俩个时间相差是否小于TimerService.p(一个周期) * @param now * @param next * @return */ private boolean isEquals(Date now,Date next) {  long time = next.getTime()-now.getTime();  if (time <= TimerService.p && time >= 0)  {   return true;  }  else  {   return false;  } } public boolean cancel() {  return true; } } //该接口描述了如何完成TimerTask,请参考TimerJobExample interface TimerJob {  public void execute();  public Date getNextExeDate(); } /** * 该例子用于演示如何完成tiemrjob * 该例子功能是在每天的凌晨一点调用 */ public class TimerJobExample implements TimerJob {  Calendar nextDate = null;  public TimerJobExample()  {   nextDate = Calendar.getInstance();   nextDate.add(Calendar.DAY_OF_MONTH,1);   //将设置调用时间是(第二天的)每天凌晨1点   nextDate.set(Calendar.HOUR_OF_DAY,1);  }  public void execute()  {   nextDate.add(Calendar.DAY_OF_MONTH,1);   nextDate.set(Calendar.HOUR_OF_DAY,1);   callFunction();  }  public Date getNextExeDate()  {    return nextDate.getTime();  }  private void callFunction()  {   System.out.println("TimerJobExample call ejb funcation:"+new Date());  } }

一个简单的Timer Service(2)

时间:2010-09-13

启动Web_TimerService

启动Web-TimerService可以有多种方法,下面列出一个简单的方法,通过jsp来启动,停止TimerService

<%@ page contentType="text/html; charset=GBK" %> <%@ page import="com.ted.cfioms.common.alert.*"%> <%  TimerService service = (TimerService)application.getAttribute("timerService");  boolean isStart = true;  if(service == null)  {   service = new TimerService();   application.setAttribute("timerService",service);   service.start();  }  else  {   service.stop();   isStart = false;   service = null;  } %> <html> <head>  <title>   timerService  </title> </head> <body bgcolor="#ffffff"> <h1>  <%=(isStart?"start ok":"stop ok")%> </h1> </body> </html>

简单吧,呵呵,我在网上没找到合适的TimerService,所以自己写的,如果大家有类似的代码,可以提出来参考参考,谢谢

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号