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

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

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

    我的Java路上那些事兒

    快樂(lè)成長(zhǎng)
    posts - 110, comments - 101, trackbacks - 0, articles - 7
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    用java寫服務(wù)程序時(shí)經(jīng)常會(huì)涉及到監(jiān)控某些配置文件,當(dāng)配置文件發(fā)生變化時(shí)實(shí)時(shí)重新加載該文件的內(nèi)容到內(nèi)存.
    實(shí)際上log4j里有現(xiàn)成的類FileWatchdog做了類似的工作.我們只需繼承它,然后重寫它的一些方法就可以了.
     
       /**使用log4j的監(jiān)控狗 */
        
    public class IPAccessFileWatchdog extends FileWatchdog {
            
    public IPAccessFileWatchdog(String filename){
                
    super(filename);
            }


            
    public void doOnChange() {
                List
    <String> list = IPAccessController.this.loadIPRule(new File(this.filename));
                
    if (list != null{
                    IPAccessController.
    this.ipRule = list.toArray(new String[list.size()]);
                }
     else {
                    IPAccessController.
    this.ipRule = null;
                }

                LogLog.warn(
    "ip access config load completed from file:" + filename);
            }

        }

    }


    FileWatchdog的代碼也很簡(jiǎn)單,其實(shí)就是起一個(gè)線程,每隔固定的時(shí)間掃描一次監(jiān)控的文件.我把代碼也貼出來(lái):'


    // Contributors:  Mathias Bogaert

    package org.apache.log4j.helpers;

    import java.io.File;
    import org.apache.log4j.helpers.LogLog;

    public abstract class FileWatchdog extends Thread {

      
      
    static final public long DEFAULT_DELAY = 60000
      
      
    protected String filename;
      
      
      
    protected long delay = DEFAULT_DELAY; 
      
      File file;
      
    long lastModif = 0
      
    boolean warnedAlready = false;
      
    boolean interrupted = false;

      
    protected
      FileWatchdog(String filename) 
    {
       
    this.filename = filename;
       file 
    = new File(filename);
       setDaemon(
    true);
       checkAndConfigure();
      }


      
      
    public
      
    void setDelay(long delay) {
       
    this.delay = delay;
      }


      
    abstract 
      
    protected 
      
    void doOnChange();

      
    protected
      
    void checkAndConfigure() {
       
    boolean fileExists;
       
    try {
        fileExists 
    = file.exists();
       }
     catch(SecurityException  e) {
        LogLog.warn(
    "Was not allowed to read check file existance, file:["+
     filename
    +"].");
        interrupted 
    = true// there is no point in continuing
        return;
       }


       
    if(fileExists) {
        
    long l = file.lastModified(); // this can also throw a SecurityException
        if(l > lastModif) {      // however, if we reached this point this
    lastModif = l;        // is very unlikely.
    doOnChange();
    warnedAlready 
    = false;
        }

       }
     else {
        
    if(!warnedAlready) {
    LogLog.debug(
    "["+filename+"] does not exist.");
    warnedAlready 
    = true;
        }

       }

      }


      
    public
      
    void run() {   
       
    while(!interrupted) {
        
    try {
      Thread.sleep(delay);
        }
     catch(InterruptedException e) {
    // no interruption expected
        }

        checkAndConfigure();
       }

      }

    }



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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲午夜精品久久久久久浪潮| 成年女人毛片免费观看97| 国产精品亚洲玖玖玖在线观看 | 久久久久久精品免费看SSS | 亚洲成年人免费网站| 久久久久久一品道精品免费看| 亚洲AV永久无码精品成人| 国产成人免费ā片在线观看老同学| 亚洲国产另类久久久精品小说 | 99久久精品日本一区二区免费| 亚洲日产2021三区| 成年女人18级毛片毛片免费观看| 亚洲一区二区三区乱码在线欧洲| 老司机永久免费网站在线观看| 国产亚洲精品美女久久久久久下载| 国产一级一片免费播放i| eeuss影院免费直达入口| 亚洲gv猛男gv无码男同短文| 2019中文字幕在线电影免费| 7777久久亚洲中文字幕| 日韩午夜免费视频| 久久国产精品免费一区| 亚洲精品在线不卡| 国产大片91精品免费看3| 一级一级一级毛片免费毛片| 亚洲成av人片在线观看无码不卡| 日本黄网站动漫视频免费| 亚洲国产午夜精品理论片在线播放 | 色在线亚洲视频www| 免费大香伊蕉在人线国产| 中文字幕免费在线播放| 噜噜噜亚洲色成人网站∨| 国产精品极品美女免费观看| aa级女人大片喷水视频免费| 久久亚洲AV成人无码| 国产一区二区免费在线| 青青青国产手机频在线免费观看 | 亚洲AV综合色区无码二区爱AV| 亚洲а∨天堂久久精品| 日韩精品人妻系列无码专区免费| 亚洲日韩精品无码专区|