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

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

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

    如何在Web應(yīng)用中啟動(dòng)后臺(tái)任務(wù)

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

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


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 最新亚洲人成无码网站| 亚洲中字慕日产2020| 亚州**色毛片免费观看| 国产最新凸凹视频免费| 亚洲色偷偷色噜噜狠狠99网| 青青青免费国产在线视频小草| 亚洲天堂福利视频| www.999精品视频观看免费| 亚洲国产亚洲片在线观看播放 | 国产91在线免费| 蜜桃传媒一区二区亚洲AV | 成人免费看黄20分钟| 亚洲午夜无码久久| 又色又污又黄无遮挡的免费视| 四虎成人精品国产永久免费无码| 久久亚洲国产成人精品无码区| 中文字字幕在线高清免费电影| 亚洲AV无码专区在线播放中文| 99在线热视频只有精品免费| 亚洲国产成人资源在线软件| 大学生一级特黄的免费大片视频| 春暖花开亚洲性无区一区二区| 在线日韩日本国产亚洲| 91久久精品国产免费一区| 亚洲欧美一区二区三区日产| 亚洲成av人片在线观看天堂无码 | 亚洲成人免费在线观看| 亚洲AV无码一区二区三区性色| 亚洲最大av无码网址| 99xxoo视频在线永久免费观看| 亚洲人成网站免费播放| 中文字幕亚洲不卡在线亚瑟| 91成人在线免费视频| 香港经典a毛片免费观看看| 亚洲成AV人片在线观看无码| 国产1024精品视频专区免费 | 亚洲AV成人一区二区三区观看| 亚洲中文字幕无码一久久区| 日韩欧美一区二区三区免费观看| h视频免费高清在线观看| 亚洲成电影在线观看青青|