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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
    摘要
      
      我們常常在Web應(yīng)用中需要啟動(dòng)一個(gè)自己寫的服務(wù),本文的目的是給你提供一個(gè)解決方案。
      
      原理
      
      本方案的原理是寫一個(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)的后臺應(yīng)用邏輯放在contextInitialized方法中實(shí)現(xiàn);把釋放后臺應(yīng)用占用資源的工作放在contextDestroyed來處理。但我們啟動(dòng)的后臺任務(wù)常常是有要求的,比如時(shí)間,頻率等,我在這里使用了一個(gè)開源組件:quartz。
      
      步驟
      
      1.寫業(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
      {
      //在這里寫業(yè)務(wù)處理代碼。什么,你不知道?那你別問我!!:-<
      }
      }
      
      本類的主要功能是由quartz中調(diào)度類按照指定的規(guī)則進(jìn)行調(diào)用執(zhí)行必要的業(yè)務(wù)邏輯。
      
      2.寫調(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á)式的說明請參閱quartz的api文檔。
      
      3.編寫服務(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)后臺任務(wù);在contextDestroyed中調(diào)用TestShedule.stop()停止后臺任務(wù)。
      
      4.部署服務(wù)啟動(dòng)類
      
      在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.啟動(dòng)web服務(wù)即可。
      
      總結(jié)
      
      其實(shí)實(shí)現(xiàn)這個(gè)功能的方法很多,我在這里是應(yīng)用了ServletContextListener接口和開源api quartz,希望能對你的開發(fā)有所幫助。
    posted on 2007-09-11 10:13 禮物 閱讀(698) 評論(0)  編輯  收藏 所屬分類: Jbpm
    主站蜘蛛池模板: 亚洲无删减国产精品一区| 暖暖在线视频免费视频| 亚洲色成人网一二三区| 免费在线观看你懂的| 黄页免费的网站勿入免费直接进入| a级毛片免费网站| 亚洲大码熟女在线观看| 蜜芽亚洲av无码精品色午夜| 国产精品亚洲综合一区| 日韩高清在线高清免费| 亚洲中文久久精品无码| 国产免费拔擦拔擦8x| 成人免费777777被爆出| 亚洲爆乳无码精品AAA片蜜桃| 亚洲第一页在线视频| 日韩精品无码人妻免费视频| h视频在线观看免费网站| 日本不卡免费新一区二区三区| 一级毛片在播放免费| 国产精品亚洲综合| 亚洲欧美日韩久久精品| 国产精品久久亚洲不卡动漫| 亚洲最大的视频网站| 一区二区三区亚洲| 亚洲国产日韩一区高清在线| 日韩亚洲欧洲在线com91tv| 亚洲日韩小电影在线观看| 国产亚洲情侣一区二区无| 亚洲精品成人在线| 亚洲国产综合精品中文字幕| 伊人久久亚洲综合影院| 人人狠狠综合久久亚洲高清| 日产国产精品亚洲系列| 亚洲精品一级无码中文字幕| 亚洲精品无码日韩国产不卡?V| 亚洲精品456播放| 国产精品V亚洲精品V日韩精品| 久久久久亚洲爆乳少妇无| 国产精品亚洲综合一区| 亚洲AV综合色区无码一区| 亚洲精品免费视频|