⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alertscheduler.java

📁 java开源的企业总线.xmlBlaster
💻 JAVA
字号:
/*------------------------------------------------------------------------------Name:      AlertScheduler.javaProject:   org.xmlBlasterProject:   xmlBlaster.orgCopyright: xmlBlaster.org, see xmlBlaster-LICENSE file------------------------------------------------------------------------------*/package org.xmlBlaster.contrib.dbwatcher.detector;import java.util.logging.Logger;import java.util.logging.Level;import java.util.Timer;import java.util.TimerTask;import org.xmlBlaster.contrib.I_Info;/** * This scheduler waiks up in intervals and triggers a database check.  * <p>  * Supported configuration: * </p> * <ul> *   <li><tt>alertScheduler.pollInterval</tt> The polling interval in milliseconds. *       Setting it to 0 switches the timer off. *   </li> * </ul> * * @author Marcel Ruff */public class AlertScheduler extends TimerTask implements I_AlertProducer{   private static Logger log = Logger.getLogger(AlertScheduler.class.getName());   private I_ChangeDetector changeDetector;   private Timer timer;   private long period;   /**    * Default constructor, you need to call {@link #init} thereafter.      */   public AlertScheduler() {      // void   }   /**    * Create a scheduler, calls {@link #init}.      * @param info The configuration environment    * @param changeDetector The class to be alerted then and again    */   public AlertScheduler(I_Info info, I_ChangeDetector changeDetector) throws Exception {      init(info, changeDetector);   }   /**    * @see org.xmlBlaster.contrib.dbwatcher.convert.I_DataConverter#init(I_Info)    */   public void init(I_Info info, I_ChangeDetector changeDetector) throws Exception {      if (changeDetector == null) throw new IllegalArgumentException("changeDetector is null, can't schedule anything.");      log.fine("created");      this.period = info.getLong("alertScheduler.pollInterval", 2000L);      this.changeDetector = changeDetector;   }      /**    * @see org.xmlBlaster.contrib.dbwatcher.detector.I_AlertProducer#startProducing    */   public void startProducing() {      if (this.period <= 0L) {         log.warning("AlertScheduler is switched off with alertScheduler.pollInterval=" + this.period);         return;      }      log.info("Starting timer with pollInterval=" + this.period + " ...");      boolean isDaemon = true;      this.timer = new Timer(/*"AlertScheduler", since JDK 1.5*/isDaemon);      this.timer.schedule(this, 0L, this.period);   }   /**    * @see org.xmlBlaster.contrib.dbwatcher.detector.I_AlertProducer#stopProducing    */   public void stopProducing() throws Exception {      log.info("stopProducing");      shutdown();   }      /**    * Used by scheduler thread internally.     */   public void run() {      // Thread.currentThread().setName("DbWatcher-Scheduler");      if (log.isLoggable(Level.FINE)) log.fine("Checking now Database again. pollInterval=" + this.period + " ...");      try {         this.changeDetector.checkAgain(null);      }      catch (Throwable e) {         log.severe("Don't know how to handle error: " + e.toString());       }   }   /**    * Stop the scheduler.     * @see org.xmlBlaster.contrib.dbwatcher.detector.I_AlertProducer#shutdown    */   public void shutdown() throws Exception {      log.fine("Shutdown");      if (this.period <= 0L) {         return;       }      cancel(); // TimerTask      this.timer = null;   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -