<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如何在Web應用中啟動后臺任務

    http://www.javaresearch.org/article/showarticle.jsp?column=2&thread=32387 摘要 我們常常在Web應用中需要啟動一個自己寫的服務,本文的目的是給你提供一個解決方案。 原理 本方案的原理是寫一個實現了ServletContextListener接口的類,該類中有兩個方法: public void contextInitialized(ServletContextEvent sce),它是在應用啟動時調用;另一個方法是:public void contextDestroyed(ServletContextEvent sce),該方法是在應用結束時調用。把我們要啟動的后臺應用邏輯放在contextInitialized方法中實現;把釋放后臺應用占用資源的工作放在contextDestroyed來處理。但我們啟動的后臺任務常常是有要求的,比如時間,頻率等,我在這里使用了一個開源組件:quartz。 步驟 1.寫業務調用類: // DumbJob.java import org.quartz.*; import java.util.*; public class DumbJob implements Job { public DumbJob() { } public void execute(JobExecutionContext context) throws JobExecutionException { //在這里寫業務處理代碼。什么,你不知道?那你別問我!!:-< } } 本類的主要功能是由quartz中調度類按照指定的規則進行調用執行必要的業務邏輯。 2.寫調度類 // TestShedule.java import org.quartz.*; import java.util.*; public class TestShedule{ static SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); static Scheduler sched; public static void run()throws Exception{ sched = schedFact.getScheduler(); //獲取調度管理器 JobDetail jobDetail = new JobDetail("myJob", sched.DEFAULT_GROUP, DumbJob.class);//創建工作 CronTrigger trigger = new CronTrigger("myTrigger","test","0/10 * * * * ?");//創建觸發器 sched.scheduleJob(jobDetail, trigger); //添加到調度管理器中 sched.start();//啟動調度管理器 } public static void stop()throws Exception{ sched.shutdown(); } } 本類的目的是設置調用規則,在這里我用了“0/10 * * * * ?”表示每10秒鐘就執行一次,有關表達式的說明請參閱quartz的api文檔。 3.編寫服務啟動類: //ServiceLoader.java import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ServiceLoader implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { try{ TestShedule.run(); }catch(Exception ex){ System.out.println(ex.getMessage()); } } public void contextDestroyed(ServletContextEvent sce) { try{ TestShedule.stop(); }catch(Exception ex){ System.out.println(ex.getMessage()); } } } 在contextInitialized中調用TestShedule.run()啟動后臺任務;在contextDestroyed中調用TestShedule.stop()停止后臺任務。 4.部署服務啟動類 在web.xml文件中增加如下一行配置: rootServiceLoader index.html 5.啟動web服務即可。 總結 其實實現這個功能的方法很多,我在這里是應用了ServletContextListener接口和開源api quartz,希望能對你的開發有所幫助。 資源 quartz: http://www.opensymphony.com/quartz ServletContextListener在javax.servlet包中

    posted on 2006-09-27 16:52 Sheldon Sun 閱讀(239) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    導航

    統計

    常用鏈接

    留言簿(3)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产日产亚洲系列最新| 日本19禁啪啪无遮挡免费动图| 中文字幕亚洲不卡在线亚瑟| 亚洲成a∧人片在线观看无码| 88av免费观看| 亚洲色偷偷偷网站色偷一区| 国产高清不卡免费视频| 久久伊人久久亚洲综合| 国产羞羞的视频在线观看免费| 亚洲综合伊人久久综合| 91免费国产视频| 亚洲AV无一区二区三区久久| 秋霞人成在线观看免费视频| 亚洲VA中文字幕无码一二三区| 久9这里精品免费视频| 亚洲春色在线观看| 中文字幕影片免费在线观看| 亚洲色偷偷综合亚洲AV伊人蜜桃| 日韩精品视频免费观看| 精品在线观看免费| 在线A亚洲老鸭窝天堂| 香蕉免费一级视频在线观看| 亚洲春色在线视频| 最近免费中文字幕高清大全| 亚洲人xxx日本人18| 国产精品免费_区二区三区观看| 免费精品国产自产拍在线观看 | 精品亚洲aⅴ在线观看| 国产卡二卡三卡四卡免费网址| 国产AV旡码专区亚洲AV苍井空 | 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲人成精品久久久久| 日韩中文字幕免费视频| 亚洲人xxx日本人18| 亚洲女同成人AⅤ人片在线观看 | 国产激情久久久久影院老熟女免费| 最新国产AV无码专区亚洲| 99爱在线观看免费完整版| 亚洲人成电影网站色www| 中文字幕亚洲无线码| 国产成人免费午夜在线观看|