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

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

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

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    如何在Web應用中啟動后臺任務的實例講解(zhuan)

    我們常常在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秒鐘就執行一次。

    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文件中增加如下一行配置:

    <?xml version="1.0" 
    encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-
    //Sun Microsystems, Inc.
    //DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app id="WebApp">
        <display-name>root</display-name>
    <!--下邊的listener部分就是配置信息-->
        <listener>
            <listener-class>ServiceLoader
    		</listener-class>
        </listener>
        <welcome-file-list>
            <welcome-file>index.html
    		</welcome-file>
        </welcome-file-list>
    </web-app>


    5、啟動web服務即可。

    總結

    其實實現這個功能的方法很多,我在這里是應用了ServletContextListener接口和開源api quartz,希望能對你的開發有所幫助。

    posted on 2006-04-13 17:32 都市淘沙者 閱讀(341) 評論(0)  編輯  收藏 所屬分類: JSP/PHP

    主站蜘蛛池模板: 84pao强力永久免费高清| 成人无码视频97免费| 日本免费网址大全在线观看| 亚洲av无码一区二区三区乱子伦 | 9久9久女女免费精品视频在线观看| 亚洲av日韩av高潮潮喷无码| 久久久国产精品无码免费专区| 亚洲av鲁丝一区二区三区| 日韩人妻一区二区三区免费 | 亚洲日本乱码卡2卡3卡新区| 成人au免费视频影院| 无码天堂va亚洲va在线va| 亚洲国产精品一区二区第四页 | 久久久高清免费视频| 亚洲不卡影院午夜在线观看| 日韩在线天堂免费观看| 青青草97国产精品免费观看| 亚洲色成人WWW永久网站| 99在线热视频只有精品免费| 亚洲欧洲另类春色校园网站| 国产精品久免费的黄网站| 九九免费观看全部免费视频| 久久精品国产亚洲AV麻豆不卡 | 免费在线观看亚洲| 免费a级毛片无码a∨免费软件| 久久亚洲国产精品成人AV秋霞 | 国产美女无遮挡免费视频网站| 久青草国产免费观看| 久久久久亚洲AV片无码下载蜜桃 | 在线观看特色大片免费视频 | 男女污污污超污视频免费在线看| 亚洲人成伊人成综合网久久久| 亚洲大片免费观看| 国产亚洲精品欧洲在线观看| 国产亚洲精品自在久久| 搡女人真爽免费视频大全| 在线视频网址免费播放| 亚洲w码欧洲s码免费| 亚洲女同成av人片在线观看| 无码高潮少妇毛多水多水免费| 中文字幕av免费专区|